在Java中重新排列ArrayList的最佳方法

14

如何最好地重新排列列表中的元素?我需要能够将元素向索引的前一步或后一步移动的功能。我考虑获取该项的索引,将其添加到索引-1/+2处并删除旧的引用。

是否有更快的处理方式,可以在此过程中避免创建重复的列表。


请提供一个例子。例如,有列表ABCDEF,你想要什么?像ABCEDF(移动元素)还是ABCEF(删除元素)?为什么要写-1 / +2而不是-1 / +1? - schnaader
我曾经尝试过在 indexof(c)+1 的例子中加上'C',结果得到了ABCCDEF。如果将旧的'C'删除,则会回到ABCDEF。如果将+2放入,则会得到ABCDCEF,而删除旧值将给出ABDCEF。因此,我选择使用+2而不是+1。但是,Collections.swap正是我所需要的。 - Jens Jansson
1个回答

40

使用JDK的swap方法

JDK的Collections类包含一个专门用于此目的的方法,称为Collections.swap。根据API文档的说明,此方法允许您“交换指定列表中指定位置的元素”。

我建议使用这种解决方案,这样您就不必从列表中删除元素,也不必自己创建swap方法。此外,看起来自1.4版Java以来已经存在这个方法,因此它应该适用于大多数现代JDK。


1
我之所以记得它,是因为我今天为我的项目在查看它。它在 JDK 的某个角落里。 - Elijah
非常酷,我想我从未使用过那种方法,但它肯定会派上用场。 - Jeff Olson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接