切换链接列表中的两个元素

Jon*_*Jon 6 java linked-list

有没有办法在链接列表中切换两个元素而不删除并重新插入它们?我目前使用的代码是:

void exchange(int i, int j) {
    int[] temp = matrix.get(i);
    matrix.remove(i);
    matrix.add(i, matrix.get(j - 1));
    matrix.remove(j);
    matrix.add(j, temp);
}
Run Code Online (Sandbox Code Playgroud)

matrix我的链表在哪里

fin*_*nnw 4

如果您必须自己实现它,那么这将起作用:

void exchange(int i, int j) {
    ListIterator<int[]> it1 = matrix.listIterator(i),
                        it2 = matrix.listIterator(j);
    int[] temp = it1.next();
    it1.set(it2.next());
    it2.set(temp);
}
Run Code Online (Sandbox Code Playgroud)

如下:

void exchange(int i, int j) {
    matrix.set(i, matrix.set(j, matrix.get(i)));
}
Run Code Online (Sandbox Code Playgroud)

第二个类似如何Collections.swap实现。第一个对于长链接列表来说稍微更有效。