2

这是我的代码,

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();
            }

        }

我得到值没有任何问题,这里我的问题是我需要随机获取值(不是重复值)。我如何随机获取值。请任何人帮助我。

提前致谢。

4

5 回答 5

4

随机播放列表,然后对其进行迭代。

于 2013-10-24T09:43:17.087 回答
1

试试这个:

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);
于 2013-10-24T09:51:23.977 回答
1

简单实用的通用方法:

static public <T> T getRandom(List<T> list){
    if(list == null || list.isEmpty()){
        return null;
    }else{
        return list.get(rand.nextInt(list.size()));
    }
}
于 2014-07-08T00:00:22.817 回答
0

在集合类中使用 shuffle()。它将满足您的需求。

列表列表=新的 ArrayList(); Collections.shuffle(list);

于 2013-10-24T09:49:58.373 回答
0

您可以使用ThreadLocalRandom。查看http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadLocalRandom.html了解更多详情。

类似于 Siddh 的建议。

于 2015-09-03T05:08:05.700 回答