为什么我的列表不能在Java中旋转?

时间:2017-03-21 04:13:46

标签: java arraylist collections set

    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]]

我不知道我在哪里出错了。

1 个答案:

答案 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);