Collection.sort with Linked List Comparable方法已被覆盖

时间:2014-06-22 12:57:45

标签: java list comparable

我尝试使用linkedlist方法对Collection.sort进行排序,但我收到此错误:

  

绑定不匹配:类型sort(List<T>)的通用方法Collections不适用于参数(ListIndiv)。推断类型Individu不是有界参数<T extends Comparable<? super T>>

的有效替代

我试着对它进行一些研究,但我找不到问题的答案。

列出个人类:

public class ListIndiv extends LinkedList<Individu> 
    implements Comparable<Individu> {
    //some code
    @Override
    public int compareTo(Individu i1, Individu i2) {
        return peek().distance(i1) - peek().distance(i2);
    }

主要课程:

public class Main {
    public static void main(String[] args) {

        Individu i1 = new Individu();
        i1.age = 4; i1.couleur_yeux = Color.green;
        Individu i2 = new Individu();
        i2.age = 16; i2.couleur_yeux = Color.blue;
        Individu i3 = new Individu();
        i3.age = 24; i3.couleur_yeux = Color.black;

        ListIndiv li = new ListIndiv();

        li.add(i1);li.add(i2);li.add(i3);

        Collections.sort(li);
    }
}

该行

Collection.sort(li);

导致问题..我不知道我做错了什么。

2 个答案:

答案 0 :(得分:2)

让班级Individu实施Comparable<Individu>界面,以便列出List<Individu>可排序的列表。

class Individu implements Comparable<Individu> {
   // implementation here ...
}

然后你可以创建一个列表给它分配元素并按照它进行排序:

List<Individu> list = // create list as linked list e.g
list.add(i1);
list.add(i2);
Collections.sort(list);

如果您无法更改课程Individu,则可以创建Comparator。如果需要进一步的信息,请发表评论。

仅供参考:This site gives an overview over the concepts Comparable Comparator周围使用小型焦点示例。

希望这有帮助

答案 1 :(得分:2)

可比较的不是ListIndividu而是Individu类本身(您不是在比较列表,而是在列表中比较Individus)。移动“可比较”&amp;您的个人课程的相关方法。