如何将第一项arraylist移到最后位置?

时间:2014-01-21 10:08:05

标签: java android

我的代码转到上一个arraylist:

 if (listItem.get(listItem.size() - 1).SortNo > 0) {
                    while (listItem.get(0).SortNo == 0) {

                        DTO_NightClinic dt = listItem.get(0);
                        listItem.remove(0);
                        listItem.add(dt);
                    }
                }

但是普通的listItem.remove(0);无效。第一项仍然存在于arraylist的第一个位置。

3 个答案:

答案 0 :(得分:8)

Collections.rotate(list, -1);

只需在-1处使用旋转,它就能完成您想要的操作

输入:

1, 2, 3, 4

输出:

2, 3, 4, 1

有关Collections#rotate(java.util.List,int)

的更多信息

答案 1 :(得分:2)

或许Collections.rotate()似乎是可行的解决方案,但有些人想要扩展任务......请参阅Collections.roatate()的来源

public static void rotate(List<?> lst, int dist) {
      ...............
        reverse(sublist1);
        reverse(sublist2);
        reverse(list);
}

它遍历列表的所有项目并应用Collections.reverse() opearion因此消耗一些时间。

在这里,因为你只是想从List中删除第一项并将其添加到List的尾部,你可以做一个简单的技巧,如下面的示例......

    ArrayList<Integer> arrayList = new ArrayList<Integer>();
    for (int i = 1; i < 5; i++) {
        arrayList.add(Integer.valueOf(i));
    }
    System.out.println(arrayList.toString());
    // prints [1, 2, 3, 4]

    Integer removedItem = arrayList.remove(0);
    arrayList.add(removedItem); // adds to the end of the List
    System.out.println(arrayList.toString());
    // prints [2, 3, 4, 1]

答案 2 :(得分:1)

Collections.rotate(list, -1);

/ ...................................