从列表中随机选择一个项目。

42

如何在Java中随机选择一个列表中的项目? 例如,我有以下列表:

List<String> list = new ArrayList<String>();
list.add("One");
list.add("Two");

如何使用 random 模块从列表中随机选择一个元素呢?

Random myRandomizer = new Random();

1
这个问题没有展示任何研究努力,而且是 https://dev59.com/lXVD5IYBdhLWcg3wAGeD 的重复。 - gh.
8
@gh,你关于重复的参考链接不正确,因为它链接到了从集合中随机选择,而不是列表。 - James Oravec
5个回答

112

像这样吗?

Random randomizer = new Random();
String random = list.get(randomizer.nextInt(list.size()));

7
在 OP 的示例中,应该是 myRandomizer。调用 nextInt() 应该很明显。 - Jon Lin
1
这段代码总是返回列表的第一个元素。 - user9347168

19

清晰的代码:

List<String> list = new ArrayList<String>();
list.add("One");
list.add("Two");
String random = list.get(new Random().nextInt(list.size()));

3
你能提供一些背景信息以解释你的答案吗?这样未来的读者就可以学习如何将其应用于他们自己的问题,而不仅仅是在这种情况下。 - Newd

4

从您的集合中检索随机元素的简单通用解决方案:

public static <T> T getRandomListElement(List<T> items) {
    return items.get(ThreadLocalRandom.current().nextInt(items.size()));
}

1
如果您使用Kotlin编程,最简单的方法是编写以下内容:
val randomElement = listName.shuffled()[0]

或者

val randomElement = listName.random()

我希望它能帮到你 :)


0

对于 Kotlin,您可以使用

random()

定义在 kotlin.collections 中

例如, 假设

val results = ArrayList<Result>() //Get the list from server or add something to the list
val myRandomItem = results.random()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接