2011-01-13 54 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)));