我正在學習Java並編寫了QuickSort
類。在某些時候,需要交換陣列中的元素,所以我試圖用Collections.swap
這樣做,推薦使用Collections.swap
,例如in this question。然而,javac QuickSort.java
我拋出一個錯誤:錯誤:交換(對象[],int,int)在集合中有私人訪問
error: swap(Object[],int,int) has private access in Collections
什麼我錯在這裏做什麼?完整的代碼爲QuickSort.java
:
package src.sort;
import java.util.Collections;
public class QuickSort {
public static void sort(Comparable[] xs) {
sort(xs, 0, xs.length);
}
private static boolean less(Comparable x, Comparable y) {
return x.compareTo(y) < 0;
}
private static void sort(Comparable[] xs, int fst, int lst) {
if (fst >= lst) return;
int i = fst, j = lst;
Comparable pivot = xs[(i + j)/2];
while (i <= j) {
while (less(xs[i++], pivot));
while (less(pivot, xs[j--]));
if (i <= j) Collections.swap(xs, i++, j--);
}
sort(xs, fst, j);
sort(xs, i, lst);
}
}
那麼它是如何來用於[我鏈接的問題](http://stackoverflow.com/questions/15963549/arraylist-swap-elements?lq=1)? – alisianoi
@ all3fox'swap(列表> list,int i,int j);'是public而'swap(Object [] arr,int i,int j)'是私有的。 – Eran
thx,現在我明白了 – alisianoi