【问题标题】:What's wrong with the rotation of my lists?我的列表轮换有什么问题?
【发布时间】:2018-11-10 18:21:01
【问题描述】:

在那部分代码中,我只想旋转列表中的一个,但两者都已旋转。

for(int i = 0; i< 1000000000; i++) { 
    Collections.rotate(newList, positions);
    System.out.println("New list: "+newList);
    System.out.println("Normal list: "+list);
    if(dosListasIguales(list, newList)) {
        movimientos = i;
        break;
        }
    }

【问题讨论】:

  • 你是如何创建newList的?如果你做了类似List newList = list 的操作,那么它们就是List
  • 我们无法从您所提供的内容中看出,但似乎有问题的两个列表必须以某种方式别名。如果您想要一个可靠的答案,请提交 minimal reproducible example 来演示问题。
  • 关于list 变量,无话可说。

标签: java arrays list rotation


【解决方案1】:

您似乎已将list 的引用复制到某处的newList。所以newList 中的任何更改都会影响list

用它来复制:

List<Integer> newList = new ArrayList<Integer>(list);

代替:

List<Integer> newList = list;

【讨论】:

  • @CarlosCastañodelCastillo List&lt;Integer&gt; newList = list; 是参考复制点。你应该使用List&lt;Integer&gt; newList = new ArrayList&lt;Integer&gt;(list);
猜你喜欢
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多