Java:从HashMap中的给定键返回随机值<;字符串,列表<;字符串>&燃气轮机;
我试图创建一个方法,当给定一个特定键时,该方法将从hashmap中的字符串列表返回一个随机值。下面是我的代码。(特别是“getRandomValue”方法,因为这是我遇到困难的方法)。我的问题是:如何在映射中查找键并从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
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()代码>将是一个很好的解决方案。