3

我阅读了有关此的文档,但我并不完全清楚。我已经将注意力集中在 set 方法上,我想我会像这样重新排序:

list.set(0,myObj);//Move first
list.set(list.indexOf(myObj) - 1, myObj);//Move up
list.set(list.indexOf(myObj) + 1, myObj);//Move down
list.set(list.size() - 1, myObj);//Move last

http://developer.android.com/reference/java/util/List.html上的文档指出 set 返回被置换的对象。所以这让我认为我必须重新放置那个对象。我对么?因此,在我描述的设置操作之后,我将有两个对列表中对象的引用。这意味着我必须循环列表以适当地放置所有其他对象?

4

4 回答 4

5

使用Collection类的swap()

swap(List list, int i, int j)

交换指定列表中指定位置的元素。

例子:

Collections.swap(arrayList,0,4);
于 2012-07-17T12:54:19.450 回答
2

查看Collections类以进行反向、重新排序、排序等操作。
您可能正在寻找rotateswap

于 2012-07-17T12:53:52.813 回答
2

听起来您想在列表顶部插入一个对象。不要使用集合。

使用List.add(0, myObj)

它会将其余部分撞倒。

于 2012-07-17T12:49:43.613 回答
1

是的,元素被替换了。它很容易修复:

int index = list.indexOf(myObj);
list.set(index, list.set(index - 1, myObj)); //Move up

这将list(index - 1)list(index). 其他操作可以用同样的方式实现。

于 2012-07-17T12:52:01.123 回答