java - 将 Generic Arraylist 转换为具有 Generic Type 的数组

标签 java arrays generics arraylist

我正在尝试使用 ArrayList 的内置 Java 方法将 ArrayList 转换为数组。然而,问题是 Java 将数组转换为类型对象的数组。我正在尝试将其转换为 T 类型(通用类型)的数组。我尝试将类类型传递到类的构造函数中,使用它来转换数组,但我没有运气。我的代码如下。任何帮助将不胜感激:

public class QuickSelect<T extends Comparable<T>> extends Sort<T> implements Selection<T> {

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
    }

}

最佳答案

ArrayList 中有两个版本的 toArray() 方法 - 一种不获取参数,并返回对象数组(您使用的),另一种则获取您想要的数组类型作为参数返回:public <T> T[] toArray(T[] a)

所以你需要使用这个,如下所示:lessThanPivot.toArray(data)

查看完整的 javadoc here

关于java - 将 Generic Arraylist 转换为具有 Generic Type 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33456233/

相关文章:

java - 维护可以修改的时间片的有序列表(列表仍应排序)

java - Android MediaPlayer `Prepared` 和 `OnPlayStarted` 问题

java - 如何使用 Java 中的重载函数打印二维数组的内容

JavaScript .push 不工作

swift - 函数安全地分配一个可选的变量,或者分配默认值如果 nil : Could not cast value of type 'Swift.Int' to 'Swift.String'

delphi - 如何检查 TypeIdenitifier(T) 是否是一个对象?

java - JFileChooser.showSaveDialog(…) - 更改目录后保留建议的文件名

arrays - Swift 如何实现 Array 的写时复制行为?

javascript - 如何在 JavaScript 对象数组中查找重复值,并只输出唯一值?

generics - Kotlin 有没有不是 Any 子类型的东西