我在“ContactGroup”类中有一个ArrayList“contactList”,它包含另一个类“Contact”的对象。该对象包含“name”的字符串和“phoneNum”的int。
如何按字母顺序对ArrayList进行排序?任何帮助将不胜感激
我尝试使用不成功:
Collections.sort(contactList);
答案 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);