可能有人請請你告訴我,爲什麼下面的代碼是行不通的,除非數組是Integer[]
,不int[]
爲什麼下面的代碼是行不通的,除非數組是整數[],不是int []
Integer[] one = {2,5,8,1,3,4,9};
Arrays.parallelSort(one, (p1, p2) -> p2 - p1);
System.out.println(Arrays.toString(one));
可能有人請請你告訴我,爲什麼下面的代碼是行不通的,除非數組是Integer[]
,不int[]
爲什麼下面的代碼是行不通的,除非數組是整數[],不是int []
Integer[] one = {2,5,8,1,3,4,9};
Arrays.parallelSort(one, (p1, p2) -> p2 - p1);
System.out.println(Arrays.toString(one));
因爲Arrays
沒有方法parallelSort
需要int[]
和Comparator
。
僅parallelSort
過載,需要一個Comparator
秒參數是一個與一個通用的第一個參數(static <T> void parallelSort(T[] a, Comparator<? super T> cmp)
),因此需要的是,第一個參數是引用數組。 Integer[]
滿足該要求,而int[]
不符合。
因爲parallelSort的簽名是:public static <T extends Comparable<? super T>> void parallelSort(T[] a)
其中T
是一個要排序的obhects類。
這裏的部分問題是Java在運行時實現類似泛型和模板的東西,這就是爲什麼需要對象並且不能使用像int這樣的本機類型。將它與C++進行比較,在編譯時實現模板,消除這些問題,並可用於本機類型。 – rcgldr