Java中的集合
Java LinkedList指南
Java ArrayList指南
Java中不可變的ArrayList
CopyOnWriteArrayList指南
JavaJava中的多維ArrayList
將迭代器轉換為列表
Java –從列表中獲取隨機項目/元素
用Java對列表進行分區
從Java列表中刪除所有Null
從Java中的列表中刪除所有重複項
檢查Java中兩個列表是否相等
如何使用Java在列表中查找元素
Java列表UnsupportedOperationException
將列表複製到Java中的另一個列表
從列表中刪除所有出現的特定值
將多個元素添加到Java ArrayList
從列表中刪除第一個元素
在Java中迭代列表的方法
Java中兩個列表的交集
如何計算Arraylist中的重複元素
查找Java中兩個列表之間的差異
Java –從列表中獲取隨機項目/元素
1.簡介
選擇一個隨機的List
元素是一個非常基本的操作,但實現起來並不那麼明顯。在本文中,我們將展示在不同情況下執行此操作的最有效方法。
2.挑選一個或多個隨機物品
為了從List
實例中獲取隨機項目,您需要生成一個隨機索引號,然後使用List.get()
方法通過此生成的索引號來獲取項目。
這裡的重點是要記住,您所使用的索引不得超過List's
大小。
2.1。單個隨機物品
為了選擇一個隨機索引,可以使用Random.nextInt(int bound)
方法:
public void givenList_shouldReturnARandomElement() {
List<Integer> givenList = Arrays.asList(1, 2, 3);
Random rand = new Random();
int randomElement = givenList.get(rand.nextInt(givenList.size()));
}
您可以始終使用靜態方法Math.random()
而不是Random
類,並將其與列表大小相乘( Math.random()
生成介於0(含)和1( Math.random()
之間的Double
隨機值,因此請記住將其int
為int
乘法後)。
2.2。在多線程環境中選擇隨機索引
使用單個Random
類實例編寫多線程應用程序時,可能會導致為訪問該實例的每個進程選擇相同的值。我們始終可以使用專用的ThreadLocalRandom
類為每個線程創建一個新實例:
int randomElementIndex
= ThreadLocalRandom.current().nextInt(listSize) % givenList.size();
2.3。選擇重複的隨機項目
有時,您可能希望從列表中選擇一些元素。這很簡單:
public void givenList_whenNumberElementsChosen_shouldReturnRandomElementsRepeat() {
Random rand = new Random();
List<String> givenList = Arrays.asList("one", "two", "three", "four");
int numberOfElements = 2;
for (int i = 0; i < numberOfElements; i++) {
int randomIndex = rand.nextInt(givenList.size());
String randomElement = givenList.get(randomIndex);
}
}
2.4。選擇無重複的隨機項目
在這裡,您需要確保選擇後將元素從列表中刪除:
public void givenList_whenNumberElementsChosen_shouldReturnRandomElementsNoRepeat() {
Random rand = new Random();
List<String> givenList = Lists.newArrayList("one", "two", "three", "four");
int numberOfElements = 2;
for (int i = 0; i < numberOfElements; i++) {
int randomIndex = rand.nextInt(givenList.size());
String randomElement = givenList.get(randomIndex);
givenList.remove(randomIndex);
}
}
2.5。選擇隨機系列
如果您想獲取一系列隨機元素, Collections
utils類可能很方便:
public void givenList_whenSeriesLengthChosen_shouldReturnRandomSeries() {
List<Integer> givenList = Lists.newArrayList(1, 2, 3, 4, 5, 6);
Collections.shuffle(givenList);
int randomSeriesLength = 3;
List<Integer> randomSeries = givenList.subList(0, randomSeriesLength);
}
3.結論
在這篇文章中,我們探索取出由隨機因素的最有效的方式List
instanc e
於不同的場合.
可以在GitHub上找到代碼示例。