2011-01-13 33 views
6

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

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是我的链接列表。

+6

在Java中,LinkedList的是,如果你意图通过索引访问元素一个不错的选择。考虑ArrayList或Vector。 – DwB 2011-01-13 16:49:26

回答

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。第一个对于长链表更有效率。

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