java - 集合排序泛型类型java

标签 java generics collections comparable

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

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

例如,我创建了这个类:

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类:

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);仍然告诉我“不存在类型变量 T 的实例,因此 T conforms to Comparable<? super T> ”。

最佳答案

你的 Sort类目前对其类型参数没有限制 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>> {

关于java - 集合排序泛型类型java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36228423/

相关文章:

java - 使用具有字符串复杂性的 ArrayStack ADT(java)

java - 2 compareTo 方法在同一个类定义中被覆盖,我怎么能强制使用第二个?

c# - .NET 中 UniqueQueue 和 UniqueReplacementQueue 集合的最高效实现

java - 如何在java中转义$?

java jetty json获取请求时间和持续时间

generics - 错误 : unable to infer enough type information about `_` ; type annotations or generic parameter binding required

generics - 如何在 Vec 中存储具有不同参数的类型?

java - 如何检查List of List中的Object是否为空或为null?

java - LinearLayout 中的动态按钮数量

java - Drive SDK查询结果随机排序