如何在ArrayList中切换元素

时间:2014-03-28 17:35:49

标签: java android arraylist

以下ArrayList填充ArrayAdapter。

List<String> hold_people = new ArrayList<String>();

hold_people.add("Frank");
hold_people.add("Bob");
hold_people.add("Tom");
hold_people.add("Alice");
hold_people.add("Glen");

弗兰克在第一位。但是用户希望先看到Alice。如何将Alice移到第一个位置?

我无法按字母顺序对其进行排序,因为我必须根据用户请求维护某个订单。

3 个答案:

答案 0 :(得分:6)

您可以使用Collections.swap

Collections.swap(hold_people, 0, hold_people.indexOf("Alice"));

这会将列表中第一个元素与"Alice"交换。

请注意,如果您的列表中没有字符串hold_people.indexOf("Alice")-1可以返回"Alice",因此您可以检查该列表是否包含该字符串。

int index = hold_people.indexOf("Alice");
if(index != -1)
    Collections.swap(hold_people, 0, index);

答案 1 :(得分:2)

使用Collections.swap(List<?> list, int i, int j)

  

交换指定列表中指定位置的元素。   (如果指定的位置相等,则调用此方法将离开   列表不变。)

使用Collections.rotate(List<?> list, int distance)

  

按指定距离旋转指定列表中的元素。   调用此方法后,索引i处的元素将成为元素   以前在索引(i - distance)mod list.size(),对于所有的值   我在0和list.size() - 1之间,包括在内。 (这种方法没有效果   关于列表的大小。)

答案 2 :(得分:0)

如果由于某种原因你不想使用收藏品,你可以

String temp = hold_people.get(0);
int i = hold_people.indexOf("Alice");
hold_people.set(0,"Alice");
hold_people.set(i, temp);

这会根据你要交换的那个而改变,但基本的想法就在那里。