集合排序泛型类型 java

Collections sort generics types java

我一直在寻找问题的答案。我发现了很多类似的主题,但我仍然不知道该怎么做。

我有一个 class 我想将对象存储在已排序的 ArrayList 中。

例如,我创建了这个 class:

public class Kwadrat implements Comparable<Kwadrat> {

    private int a;

    public Kwadrat(int a){
        this.a = a;
    }

    public int get_size(){
        return a*a;
    }

    public int compareTo(Kwadrat b){
        if(b.get_size() > get_size()){
            return -1;
        }
        if(b.get_size() < get_size()){
            return 1;
        }
        return 0;
    }
}

这是我的 Sort class:

public class Sort <T> {
    ArrayList<T> arraylist;

    public Sort(){
        arraylist = new ArrayList<T>();
    }


    public void add(T element){

        arraylist.add(element);

       Collections.sort(arraylist);



    }
}

Collections.sort(arraylist); 仍然告诉我 "no instance(s) of type variable(s) T exists so that T conforms to Comparable<? super T>".

public class Sort <T> { 行中的 T 更改为 T extends Comparable<T>,因为该方法需要 <T extends Comparable<? super T>> 参数。

您的 Sort class 目前对其类型参数 T 没有限制,因此它可以是任何类型,甚至不是 Comparable 的类型。它会接受 Object,而不是 Comparable。因为没有界限,而且因为编译器发现可以传递给单参数的内容是有界限的 Collections.sort method,所以你的编译器错误。

您应该在 T 上创建与 Collections.sort 期望相同的边界。

public class Sort <T extends Comparable<T>> {

甚至更好:

public class Sort <T extends Comparable<? super T>> {