我的代码转到上一个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的第一个位置。
答案 0 :(得分:8)
Collections.rotate(list, -1);
只需在-1
处使用旋转,它就能完成您想要的操作
输入:
1, 2, 3, 4
输出:
2, 3, 4, 1
的更多信息
答案 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);
/ ...................................