有没有办法在链接列表中切换两个元素而不删除并重新插入它们?我目前使用的代码是:
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
是我的链接列表。
答案 0 :(得分:5)
使用Collections对象中的swap方法:http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#swap%28java.util.List,%20int,%20int%29
答案 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)));