Java:从HashMap中的给定键返回随机值<;字符串,列表<;字符串>&燃气轮机;

Java:从HashMap中的给定键返回随机值<;字符串,列表<;字符串>&燃气轮机;,java,list,random,hashmap,Java,List,Random,Hashmap,我试图创建一个方法,当给定一个特定键时,该方法将从hashmap中的字符串列表返回一个随机值。下面是我的代码。(特别是“getRandomValue”方法,因为这是我遇到困难的方法)。我的问题是:如何在映射中查找键并从hashmap返回随机值 import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; public class Values { priva

我试图创建一个方法,当给定一个特定键时,该方法将从hashmap中的字符串列表返回一个随机值。下面是我的代码。(特别是“getRandomValue”方法,因为这是我遇到困难的方法)。我的问题是:如何在映射中查找键并从hashmap返回随机值

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;

}

}
import java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入java.util.Random;
公共阶级价值观{
私人地图;
私有静态随机兰德=新随机();
公共仓库(){
this.map=新的HashMap();
}
公共布尔containsKey(字符串键){
if(地图容器(图例)){
返回true;
}返回false;
}
公共void put(字符串键、列表值){
map=新的HashMap();
map.put(键、值);
}
公共字符串getRandomValue(字符串键){
for(字符串key1:map.keySet()){
if(地图容器(图例)){
//我不知道该怎么办
}
}
返回键;
}
}

首先,创建一个
java.util.Random
实例作为类中的静态最终字段,因为每次调用
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);
}
公共字符串getRandomValue(字符串键){
List=map.get(键);
if(list==null){
返回null;//或引发异常
}
int randomIndex=RANDOM.nextInt(list.length());
返回列表.get(随机索引);
}

Random.nextInt(int x)
方法将返回一个介于零(包括)和
x(排除)之间的值,这使得它非常适合拾取随机索引(因为列表和数组索引总是从零开始)。

返回List.get(new Random().nextInt(List.size())
虽然我建议您重新使用
随机
实例。@Boristespider很抱歉,但我对链接到我创建的hashmap中的字符串列表的方式感到困惑。我不理解您的循环
包含的是skey
东西。@nissimabehcera为什么要尝试将一些随机的
字符串
解析为
int
private final Map=new HashMap()将是一个很好的解决方案。