移动arraylist java中的元素

D. *_*Ace -1 java algorithm logic

我有以下数组列表:

arrList = {"A", "2b", "3c", "4x", "5y", "6k", "7", "8", "9", "10", "11", "13", "14", "15", "16", "17", "18", "19", "20"}
Run Code Online (Sandbox Code Playgroud)

我想移动元素,所以它变成:

arrList = {"A", "3c", "4x", "5y", "6k", "2b", "7", "8", "9", "10", "11", "13", "14", "15", "16", "12", "17", "18", "19", "20"}
Run Code Online (Sandbox Code Playgroud)

请注意:第 2 位中的项目已移至第 6 位。第 12 位已移至第 16 位

谁能告诉我如何使用 for 循环实现这一目标?或者,还有更好的方法?

如果我的列表是动态的并且不断增长,我希望继续使用相同的模式,以便项目在:

第 22 位将移至第 26 位

And*_*ner 8

在代码行方面,最简单的方法是从列表中删除元素并将其重新插入到新位置:

list.add(toPos, list.remove(fromPos));
Run Code Online (Sandbox Code Playgroud)

然而,这不一定是最有效的方法,因为它需要数组列表中的所有元素通过删除向下移动,并通过插入向上移动。

您可以通过显式原位移动所有元素来更有效地完成此操作:

Integer fromValue = list.get(fromPos);
int delta = fromPos < toPos ? 1 : -1;
for (int i = fromPos; i != toPos; i += delta) {
  list.set(i, list.get(i + delta));
}
list.set(toPos, fromValue);
Run Code Online (Sandbox Code Playgroud)