按字母顺序排序ArrayList

时间:2015-05-10 00:50:05

标签: java sorting arraylist

我在“ContactGroup”类中有一个ArrayList“contactList”,它包含另一个类“Contact”的对象。该对象包含“name”的字符串和“phoneNum”的int。

如何按字母顺序对ArrayList进行排序?任何帮助将不胜感激

我尝试使用不成功:

 Collections.sort(contactList);

5 个答案:

答案 0 :(得分:1)

您必须实现Comparable接口。在网上查找,你的代码应该是这样的:

public class Contact implements Comparable<Contact> {

...

    public int compareTo(Contact c) {
        return c.getString().compareTo(this.string)
    }
}

假设字符串存储在变量String string中。

现在尝试排序!

答案 1 :(得分:1)

您的联系人类型应该实现可比较:

public class Contact implements Comparable<Contact>
{
 @Override
    public int compareTo(Contact o) {
        return o.name.compareTo(name);
    }
}

答案 2 :(得分:1)

ArrayList<Contact> l = new ArrayList<Contact>();
l.sort(new Comparator<Contact>(){
    @Override
    public int compare(Contact o1, Contact o2){        
        return o1.getName().toLowerCase().compareTo(o2.getName().toLowerCase());
    }           
});

答案 3 :(得分:1)

这种方式很简单:

Collections.sort(list, String.CASE_INSENSITIVE_ORDER);

编辑我点击了发布按钮以快速启动。您需要使Contact类与Collections.sort(list)具有可比性,以便它知道要用于排序的字段(您可以使用可比较的更高级排序,但这里只需要使用{{} 1}}排序)。要执行此操作,只需将name添加到implements Comparable<Contact>类,然后在此界面Contact中实现一个方法,如下所示:

compareTo(Contact o)

答案 4 :(得分:0)

尝试使用比较器:

class ContactComparator implements Comparator<Contact> {
    @Override
    public int compare(Contact c1, Contact c2) {
        return c1.getName().compareToIgnoreCase(c2.getName());
    }
}

//getName being getter for a attribute name(say)
Collections.sort(contactList, new ContactComparator());

在上面的代码片段中,您还可以根据需要使用compare(..)flavor。

然后您可以使用Collections.sort(contactList,new ContactComparator());

进行排序

或者你也可以使你的Contact类实现Comparable,你可以在compareTo(..)

里面做类似的事情。

并使用Collections.sort(contactList);