使用Collections.sort对特定对象的ArrayList进行排序

时间:2014-04-23 01:58:00

标签: java sorting collections comparable

所以我已经看到了解决类似问题的多个问题,但我无法找到一个与我的问题完全相同的问题。

我有一个ContactList的ArrayList,我想使用Collections.sort对它们进行排序:

public void sortContactArrayList(){
    ArrayList<Contact> newList = new ArrayList<Contact>();
    Collections.sort(newList);
}

为了做到这一点,我提出Contact实施Comparable<Contact>。 而且,我的compareTo方法如下所示:

@Override
public int compareTo(Contact otherContact) {
    return this.getName().compareTo(otherContact.getName());
}

但是,当我调用Collections.sort(newList);

时,我收到错误

错误是:

“绑定不匹配:类型集合的通用方法sort(List<T>”不适用于参数(ArrayList<Contact>)。推断类型Contact不是有界参数{{1}的有效替代}“

有谁知道这是什么问题?就像我说的那样,我已经看到了这个类似的问题,其中包含某些对象的自定义列表,例如“<T extends Comparable<? super T>>”或其他东西,但我从未在某个对象本身看到过这个问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您实施了Comparable<Contact>,那就没问题。

这是我的快速测试代码:

Contact.java:

public class Contact implements Comparable<Contact> {

    private String name;

    public Contact(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public int compareTo(Contact otherContact) {
        return this.getName().compareTo(otherContact.getName());
    }
}

主要方法:

public static void main(String[] args) {

    ArrayList<Contact> newList = new ArrayList<Contact>();
    newList.add(new Contact("Midgar"));
    newList.add(new Contact("David"));
    Collections.sort(newList);
    System.out.println(newList);
}