import java.util.*;
public class RotateList {
public static void main(String[] args)
{
List<List<Integer>> copies = new ArrayList<>();
List<Integer> list = new ArrayList<>(Arrays.asList(1,2,3));
int size = list.size();
Set<List<Integer>> set = new HashSet<>();
while(size > 0)
{
copies.add(list);
size--;
}
size = list.size();
System.out.println("Copies Before:");
System.out.println(copies);
for(int i = 0; i < copies.size();i++)
{
Collections.rotate(copies.get(i), i+1);
}
System.out.println("Copies after:");
System.out.println(copies);
}
}
输出结果为:
之前复制:[[1,2,3],[1,2,3],[1,2,3]] 复制后:[[1,2,3],[1,2,3],[1,2,3]]
我不知道我在哪里出错了。
答案 0 :(得分:2)
问题是您要添加相同的列表3次。当您旋转其中一个时,您可以旋转所有这些。
您必须创建3个单独的列表。
method
输出:
List<List<Integer>> copies = new ArrayList<>();
for(int i = 0; i < 3; i++) {
copies.add(new ArrayList<>(Arrays.asList(1,2,3)));
}
System.out.println("Copies Before:");
System.out.println(copies);
for (int i = 0; i < copies.size(); i++) {
Collections.rotate(copies.get(i), i + 1);
}
System.out.println("Copies after:");
System.out.println(copies);