看看Dual pivot快速排序的jdk實現,每種類型的數組都有大量的重複代碼。例如:Java - 爲什麼DualPivotQuicksort有重複的代碼?
整數:
static void sort(int[] a, int left, int right,
int[] work, int workBase, int workLen) {
// Use Quicksort on small arrays
if (right - left < QUICKSORT_THRESHOLD) {
sort(a, left, right, true);
return;
}
多頭:
static void sort(long[] a, int left, int right,
long[] work, int workBase, int workLen) {
// Use Quicksort on small arrays
if (right - left < QUICKSORT_THRESHOLD) {
sort(a, left, right, true);
return;
}
爲什麼不直接使用T []和自動裝箱,從受益?
什麼自動裝箱?嘗試將一個'int []'傳遞給'Integer []' - 它們不是賦值兼容的。 – RealSkeptic
自動裝箱正是爲什麼沒有完成。泛型類型必須是引用類型,這意味着你不得不使用'Long'而不是更便宜的'long',因爲數組並不是協變的。或者它是變體?我總是混合這些。無論哪種方式,「Long []」都不能轉換爲「long []」。 –
我沒有注意到那種情況下不能使用汽車裝箱。值類型的出現如何允許對所有值類型使用一個泛型函數? http://cr.openjdk.java.net/~jrose/values/values-0.html – Diaa