簡體   English   中英

如何隨機播放 ArrayList 的特定范圍?

[英]How can I shuffle a specific range of an ArrayList?

在 Java 中,我知道要對 ArrayList 進行洗牌,方法 Collections.shuffle() 存在,但是這會洗牌整個列表。

我該如何編寫一個方法(或者,有人可以編寫它並給我看嗎?),例如:

private ArrayList<AnObject> list;

/**
 * Shuffles the concents of the array list in the range [start, end], and 
 * does not do anything to the other indicies of the list.
 */
public void shuffleArrayListInTheRange(int start, int end)

使用List.subListCollections.shuffle ,像這樣:

Collections.shuffle(list.subList(start, end));

(注意subList排他的第二個索引,所以如果你想在 shuffle 中包含end索引,請使用end+1 。)

由於List.subList返回列表的視圖,因此(通過 shuffle 方法)對子列表所做的更改也會影響原始列表。

是 - 使用List.sublist(start, end)Collections.shuffle() ,即:

Collections.shuffle(list.sublist(start, end));

sublist返回列表的視圖,所以當你打亂它時,你打亂了實際的列表,但只在開始和結束之間

Collections.shuffle(list.subList(start, end+1));

注意 +1,因為subList()的結束索引是獨占的。

這很簡單

public void shuffleArrayListInTheRange(int start, int end) {
    Collections.shuffle(list.subList(start, end));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM