Java中從集合中獲取隨機元素
瀏覽人數:1,371最近更新:
1. 概述
從Set
中隨機選擇元素是各種 Java 應用程序中的常見需求,特別是在遊戲和數據處理任務中。
在本文中,我們將探索從 Java Set
中選取隨機元素的不同方法。
2.使用java.util.Random
類
java.util.Random
類是一個用於生成隨機數的方便工具。要從Set
中選擇隨機元素,我們可以生成一個隨機索引並使用它來訪問該元素:
public static <T> T getByRandomClass(Set<T> set) {
if (set == null || set.isEmpty()) {
throw new IllegalArgumentException("The Set cannot be empty.");
}
int randomIndex = new Random().nextInt(set.size());
int i = 0;
for (T element : set) {
if (i == randomIndex) {
return element;
}
i++;
}
throw new IllegalStateException("Something went wrong while picking a random element.");
}
讓我們測試一下我們的方法:
Set<String> animals = new HashSet<>();
animals.add("Lion");
animals.add("Elephant");
animals.add("Giraffe");
String randomAnimal = getByRandomClass(animals);
System.out.println("Randomly picked animal: " + randomAnimal);
結果應該是隨機的:
Randomly picked animal: Giraffe
3.使用ThreadLocalRandom
類
從 Java 7 開始, ThreadLocalRandom
類提供了一種更高效且線程安全的替代方案來生成隨機數。以下是我們如何使用它從Set:
int randomIndex = ThreadLocalRandom.current().nextInt(set.size());
除瞭如何選擇隨機數之外,解決方案與上面相同。
使用ThreadLocalRandom
優於java.util.Random
,因為它減少了多線程場景中的爭用,並且通常提供更好的性能。
4。結論
總之,我們學習了兩種從 Java Set
中選取隨機元素的方法。
本文中的示例代碼可以在 GitHub 上找到。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議