今天项目用到了List的排序,就总结一下吧
总的来说有两种方法
1在对象中实现Comparable接口
public class Student implements Comparable<Student> {
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
@Override
public int compareTo(Student o) {
return this.getOrder().compareTo(o.getOrder());
// return 0;
}
}
测试代码
public static void main(String[] args) {
List<Student> listA = new ArrayList<Student>();
Student p1 = new Student();
Student p2 = new Student();
Student p3 = new Student();
p1.setName("name1");
p1.setOrder(1);
p2.setName("name2");
p2.setOrder(2);
p3.setName("name3");
p3.setOrder(3);
listA.add(p2);
listA.add(p1);
listA.add(p3);
Collections.sort(listA);
for (Student p : listA) {
System.out.println(p.getName());
}
}
2在对List列表排序的时候重载Collections.sort方法
对象完全不用改变
public class Student {
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}
测试代码:
public static void main(String[] args) {
List<Student> listA = new ArrayList<Student>();
Student p1 = new Student();
Student p2 = new Student();
Student p3 = new Student();
p1.setName("name1");
p1.setOrder(1);
p2.setName("name2");
p2.setOrder(2);
p3.setName("name3");
p3.setOrder(3);
listA.add(p2);
listA.add(p1);
listA.add(p3);
Collections.sort(listA, new Comparator<Student>() {
public int compare(Student arg0, Student arg1) {
// return (-arg0.getOrder().compareTo(arg1.getOrder()));//递减
return arg0.getOrder().compareTo(arg1.getOrder());// 递增
}
});
for (Student p : listA) {
System.out.println(p.getName());
}
}
两种的结果都是