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

时间:2011-01-13 16:43:38

标签: 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);
}

其中matrix是我的链接列表。

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分: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);
}

就像这样:

void exchange(int i, int j) {
    matrix.set(i, matrix.set(j, matrix.get(i)));
}

第二个类似于Collections.swap的实施方式。第一个是长链表的效率稍高。

答案 2 :(得分:3)

matrix.set(i, matrix.set(j, matrix.get(i)));