【问题标题】:Shuffling multiple arrayList in the same order?以相同的顺序改组多个arrayList?
【发布时间】:2014-12-13 12:50:36
【问题描述】:

您好,我有 3 个名为 trackNum、名称和持续时间的数组列表。 arraylist 的内容是连接的,即 trackNum 名称和持续时间的索引 1 是连接的。

所以我创建了第三个数组列表,其中填充了会被打乱的数字。然后这些数字将用作系统输出的索引。

我需要对列表进行洗牌,以便每个数组列表的内容仍然相互连接。这是我尝试过的。

public void shuffleTracks(String tracks){           
    for(int i = 0; i < name.size(); i++){
        numbers.add(i);
    }
    Collections.shuffle(numbers); 
    Iterator<Integer> itr = numbers.iterator();
    while (itr.hasNext()){
        System.out.println(itr.next());
    }

    for(int a = 0; a < name.size(); a++){
        System.out.println(trackNum[numbers[a]] ": " + name[numbers[a]] " " + duration[numbers[a]]);
    }
}

我的所有错误都出现在最后一个系统打印行,错误提示

任何帮助都会非常有用。

【问题讨论】:

  • 您可以创建一个包含所有需要信息的类,然后使用该类的实例随机排列单个数组列表。
  • @Jordão 是的,回答一下,给他看一个简单的Track 类。
  • 与其对每个字段使用一个数组,不如让一个包含每个字段的类以及此类的数组/集合更有意义。

标签: java arrays loops arraylist shuffle


【解决方案1】:

直接的答案是使用get(int index),而不是使用方括号 ([index]) 进行数组访问,用于列表等集合。

那就是:

numbers.get(a)

代替:

numbers[a]

Java 没有语法糖来用括号替换get 方法以进行数组访问。

【讨论】:

  • 您在构造字符串时还缺少+ 运算符,请改用printf
  • 感谢您的建议,但我仍然收到这些错误imgur.com/15HzYkm,我的老师要求提供数组列表:/
  • 当然,您应该对其他 ArrayList 实例执行相同操作,而不仅仅是 numbers...
  • 我现在只收到这些错误“表达式的类型必须是数组类型,但它解析为 ArrayList
  • 我看不出你给我的代码是怎么可能的。如果一切正确,您的代码中不应该有任何数组,但听起来您还剩下一两个(可能作为返回类型?)。如果你必须更新你的代码下面你给我们的问题,明确标记为编辑...
猜你喜欢
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多