我正在尝试创建一种方法,当给定特定键时,该方法将从哈希图中的字符串列表中返回随机值。这是下面的代码。 (特别要看方法“ getRandomValue”,因为那是我遇到的困难)。我的问题是:如何在地图中查找键并从哈希图中返回随机值?
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class Values {
private Map<String, List<String>> map;
private static Random rand = new Random();
public void ValueStore() {
this.map = new HashMap<String, List<String>>();
}
public boolean containsKey(String key) {
if(map.containsKey(key)) {
return true;
} return false;
}
public void put(String key, List<String> value) {
map = new HashMap<>();
map.put(key, value);
}
public String getRandomValue(String key) {
for (String key1 : map.keySet()) {
if(map.containsKey(key)) {
//not sure what to do here
}
}
return key;
}
}
答案 0 :(得分:1)
首先在您的类中创建一个java.util.Random
实例作为静态final字段,因为您的getRandomValue(String)
方法每次调用时都需要使用它:
private static final Random RANDOM = new Random();
现在在您的方法中使用它:
public String getRandomValue(String key) {
List<String> list = map.get(key);
if (list == null) {
return null; // or throw an exception
}
int randomIndex = RANDOM.nextInt(list.length());
return list.get(randomIndex);
}
Random.nextInt(int x)
方法将返回零(包括)和x
(不包括)之间的值,这使其非常适合选择随机索引(因为List和数组索引始终从零开始)。