两种方式:
- 实现
Comparable接口
- 创建
Comparator
使用第一种方法,您只能通过您将定义的一个方法 compareTo 对集合进行排序
你的Person.java
class Person implements Comparable<Person> {
private String name;
private String profession;
@Override
public int compareTo(Person o) {
return this.profession.compareTo(o.getProfession());
}
public String getName() {
return name;
}
public String getProfession() {
return profession;
}
}
那么你需要调用:
Collections.sort(yourCollection);
使用第二种方式,您可以按一个或多个Comparator 进行排序,让您能够用不同的标准比较同一个集合。
两个Comparator的示例
public class PersonSortByNameComparator implements Comparator<Person>{
@Override
public int compare(Person p1, Person p2) {
return p1.getName().compareTo(p2.getName());
}
}
public class PersonSortByAlphabeticalProfessionComparator implements Comparator<Person>{
@Override
public int compare(Person p1, Person p2) {
return p1.getProfession().compareTo(p2.getProfession());
}
}
或者你需要的这个:
public class PersonSortByProfessionComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
if(p1.getProfession().equalsIgnoreCase(p2.getProfession())
return 0;
if(p1.getProfession().equalsIgnoreCase("student")
return -1;
if(p1.getProfession().equalsIgnoreCase("engineer")
return 1;
if(p1.getProfession().equalsIgnoreCase("doctor")
return 1;
else
return -1;
}
}
然后调用其中一个:
Collections.sort(yourCollection, new PersonSortByNameComparator());
This blog article写得真好,你可以举一些例子