gpt4 book ai didi

java - 随机播放列表(某些序列除外)

转载 作者:行者123 更新时间:2023-11-30 02:15:10 40 4
gpt4 key购买 nike

我想洗牌 ArrayList但基于一些自定义条件:如果我的数组列表类似于 [1, 4, 5, 6, 9, 45, 67] ,我想对其进行洗牌,但请确保 5, 6, 9总是一起出现。

Collections有没有可用的方法类来做这个?

我尝试这样做,但它抛出 ConcurrentModificationException

 List<Integer> y= new ArrayList<>();
y.add(1);
y.add(4);
y.add(5);
y.add(6);
y.add(9);
y.add(45);
y.add(67);
List<Integer> z = y.subList(2, 5);
y.removeAll(z);
Collections.shuffle(y);
int index = ThreadLocalRandom.current()
.nextInt(0, y.size() + 1);
y.addAll(index,z);

最佳答案

听起来您的数据实际上应该是列表的列表,特别是因为您可能有超过 1 个组需要呆在一起。您可以在需要时随时将其压平。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Example {
public static void main(String[] args) {
List<List<Integer>> y = new ArrayList<List<Integer>>();
y.add(new ArrayList<Integer>(Arrays.asList(1)));
y.add(new ArrayList<Integer>(Arrays.asList(4)));
y.add(new ArrayList<Integer>(Arrays.asList(5, 6, 9)));
y.add(new ArrayList<Integer>(Arrays.asList(45)));
y.add(new ArrayList<Integer>(Arrays.asList(67)));
Collections.shuffle(y);
List<Integer> flatList = new ArrayList<>();
y.forEach(flatList::addAll);

}

}

关于java - 随机播放列表(某些序列除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48782038/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com