我試圖使用ArrayList的內置Java方法將ArrayList轉換爲數組。但是,問題在於Java將數組轉換爲一個類型對象數組。我試圖將其轉換爲類型T(泛型)的數組。我試着將類類傳入類的構造函數中,使用它來投射數組,但我沒有運氣。我的代碼如下。任何幫助,將不勝感激:將泛型列表轉換爲具有泛型類型的數組
公共類QuickSelect>擴展排序實現選擇{
Class<T> t; // for class type
QuickSelect(Class<T> t){
this.t = t;
}
@Override
public T select(T[] data, int n, int k) {
if(data.length == 0) return null;
if(k == 1) return data[0];
if(k >= n || k <=0) return null;
Random randomGenerator = new Random();
int pivotPosition = randomGenerator.nextInt(n-1);
T pivotValue = data[pivotPosition];
ArrayList<T> lessThanPivot = new ArrayList<T>();
ArrayList<T> equalToPivot = new ArrayList<T>();
ArrayList<T> greatThanPivot = new ArrayList<T>();
for(int i=0; i < n; i++){
if(compare(pivotValue, data[i]) < 0) lessThanPivot.add(data[i]);
else if(compare(pivotValue, data[i]) == 0) equalToPivot.add(data[i]);
else greatThanPivot.add(data[i]);
}
Class<?> tClass = t.getClass();
if(k <= lessThanPivot.size()) select(lessThanPivot.toArray(), lessThanPivot.size(), k); // this part of the code is where the issue is
return null; //don't worry about this for now
}
}
不要擔心在某些地方返回null的方法..這是我的TODO – hadis