我正在使用java.util.LinkedList
有什么方法可以帮助我吗?
答案 0 :(得分:8)
int len = list.size();
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(len);
答案 1 :(得分:4)
如果您只需要一个元素,则可以使用Random类生成(伪)随机值(如您在问题中所写):
E element = list.get(new Random().nextInt(list.size()));
请记住LinkedList.get(index)
是O(n)操作,如评论中所述,为此目的最好使用ArrayList
。
如果你想改组整个阵列,你可以像这样使用Collections api:
Collections.shuffle(list);
答案 2 :(得分:3)
您也可以使用List
随机播放Collections.shuffle
并每次都选择第一个元素,尽管这可能是一个有点昂贵的计算方法。你应该注意的另一个技巧。 : - )
final List<String> lst = Arrays.asList("a", "b", "c");
Collections.shuffle(lst);
final String rndStr = lst.get(0);
答案 3 :(得分:0)
使用size()
获取列表长度,创建介于0和size-1之间的随机数,并使用get(index)
检索具有该索引的元素。
答案 4 :(得分:0)
如果你真的只需要一个元素,请使用dacwe的解决方案。如果您需要多个值(例如,在模拟纸牌游戏,宾果游戏等时),您可以使用java.util.Collections.shuffle(list);
,并为您需要的每个元素调用list.remove(0);
。