java - 在 ArrayList 中移动项目

标签 java arraylist

我一直在玩ArrayLists。我想要实现的是一种方法来做这样的事情:

Item 1
Item 2
Item 3
Item 4

我正在尝试将列表中的项目向上移动,除非它已经在顶部,在这种情况下它将保持不变。例如,如果第 3 项被移动,则列表将是:

Item 1
Item 3
Item 2
Item 4

根据我目前的小理解,我想要一些类似的东西:

IF arrayname index is not equal to 0
THEN move up
ELSE do nothing

我正在努力解决的部分是“向上移动”部分。非常感谢任何有关如何实现此目的的提示或代码示例。

最佳答案

我在寻找答案时遇到了这个老问题,我想我会发布我找到的解决方案,以防其他人经过这里寻找相同的解决方案。

对于交换 2 个元素,Collections.swap 很好。但是,如果我们想移动更多元素,有一个更好的解决方案,即创造性地使用 Collections.sublist 和 Collections.rotate,直到我看到这里描述的时候才想到:

http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#rotate%28java.util.List,%20int%29

这是一个引述,但也请自己去阅读全文:

Note that this method can usefully be applied to sublists to move one or more elements within a list while preserving the order of the remaining elements. For example, the following idiom moves the element at index j forward to position k (which must be greater than or equal to j):

Collections.rotate(list.subList(j, k+1), -1);

关于java - 在 ArrayList 中移动项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4938626/

相关文章:

java - 使用 Java 套接字发送电子邮件

java - transient 如何在序列化 Java 中与 final 一起工作

java - CMU Sphinx 翻译音频时的准确性非常低

java - 从数组列表中随机选择唯一的项目

java - java 方法内多个 ArrayList 初始化可能出现的内存问题

java - 如何在 BlueJ 中为 ArrayList 输入参数?

java - 没有 @Transactional 注释的 Spring 托管事务

java - 在java中手动旋转图像?

java - 将某些子字符串前缀添加到数组列表中

java - ArrayLists的ArrayList,如何使用内链表?