我的代码在这里,
List<HashMap<ArrayList<String>, ArrayList<ArrayList<String>>>> al = new ArrayList<HashMap<ArrayList<String>, ArrayList<ArrayList<String>>>>();
从上面的列表中,我得到如下值:
for (HashMap<ArrayList<String>, ArrayList<ArrayList<String>>> entry : al) {
for (Entry<ArrayList<String>, ArrayList<ArrayList<String>>> mapEntry : entry
.entrySet()) {
key = mapEntry.getKey();
value = mapEntry.getValue();
}
}
我得到的值没有任何问题,我的问题是我需要随机获取值(不是重复值)。我如何随机获取值。请任何人帮助我。
提前致谢。
打乱列表,然后迭代它。
试试这个:
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("abc", 1);
map.put("def", 2);
map.put("ghi", 3);
//Creating a list
List<Integer> list = new ArrayList<Integer>(map.values());
//Generating a random value
int index = new Random().nextInt(list.size());
//Result
Integer value = list.get(index);
简单的 util 泛型方法:
static public <T> T getRandom(List<T> list){
if(list == null || list.isEmpty()){
return null;
}else{
return list.get(rand.nextInt(list.size()));
}
}
在集合类中使用 shuffle()。它将满足您的需求。
列表列表=新数组列表();Collections.shuffle(list);
您可以使用
ThreadLocalRandom。有关更多详细信息,请查看 http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadLocalRandom.html。
与Siddh的建议类似。