java - 从数组列表中选择多个/随机元素

标签 java arraylist random

除了 one 元素外,我如何从数组列表中选择随机元素? 这是我的数组列表:

ArrayList <String> provinces = new ArrayList();

Collections.addAll(
    provinces, 
    "New Brunswick", 
    "Saskatchewan", 
    "Ontario", 
    "Nova Scotia", 
    "Quebec", 
    "Alberta");

对于这个例子,我想随机选择其他元素,除了萨斯喀彻温省。

我试过:

 for(int i == provinces.get (0); i < provinces.get(1); i > provinces.get(2); i < provinces.get(5)) {

     int getPossibleAnswers = (int) Math.floor(Math.random()*i);               
     String displayPossibleAnswers = provinces.get(getPossibleAnswers);                
     outputAnswers.append(displayPossibleAnswers + "\n");
     }

显然,这段代码不起作用,我不知道该怎么做。 提前致谢!

最佳答案

构建所有索引值的列表,除了萨斯喀彻温省的索引,然后将其打乱。

List<String> provinces = Arrays.asList("New Brunswick", "Saskatchewan", "Ontario", "Nova Scotia", "Quebec", "Alberta");

List<Integer> indexes = new ArrayList<>();
for (int i = 0; i < provinces.size(); i++)
    if (! provinces.get(i).equals("Saskatchewan"))
        indexes.add(i);
Collections.shuffle(indexes);

StringBuilder outputAnswers = new StringBuilder();
for (int i : indexes)
    outputAnswers.append(provinces.get(i) + "\n");

System.out.print(outputAnswers);

示例输出

Nova Scotia
Quebec
Ontario
Alberta
New Brunswick

关于java - 从数组列表中选择多个/随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44441703/

相关文章:

java - 从 java 代码打开命令提示符并运行一些命令并读取 cmd 提示符显示?

java - 将 double 组列表转换为整数数组列表

c# - 根据值从字典中选择随机条目

python - 我使用 random.shuffle 是错误的还是这是一个错误?

java - 我们可以安全地对 Java Collections shuffle(List<?>, Random) 方法做出哪些假设?

java - 考虑 "if"语句和异常的长期性能成本

java - 在 ArrayList 中查找重复值

algorithm - 从具有均匀分布概率的流中选择一个元素

Java 让 JDialog 监听,直到用户点击 JButton

java - 多线程同时向非同步的ArrayList对象添加元素可能会导致什么问题?