Java中,List集合对象,默认有一个排序方法sort(Comparator<? super E> c),如果传递null,那是对简单类型的排序,如果是对象类型,并且是需要按照对象类型的某一个属性字段排序,就需要我们传入排序的规则。
show me the code:
package com.xxx.huali.hualitest.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ListSort {
public static void main(String[] args) {
List<Person> list = new ArrayList<Person>();
list.add(new Person(1,"jack",18));
list.add(new Person(2,"paul",28));
list.add(new Person(3,"zion",20));
list.add(new Person(4,"jone",30));
list.forEach(System.out::println);
//利用Collections.sort方法按照年龄排序,默认升序
Collections.sort(list, (a,b)->{
return a.getAge() - b.getAge();
});
System.out.println("================================");
list.forEach(System.out::println);
//直接使用List集合sort方法按照姓名排序,默认字母升序
list.sort((a,b)->a.getName().compareTo(b.getName()));
System.out.println("================================");
list.forEach(System.out::println);
}
}
class Person{
private int id ;
private String name ;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
public Person() {
}
public Person(int id,String name,int age) {
this.id = id;
this.name = name;
this.age = age;
}
}
示例中,定义了Person对象,分别按照年龄和姓名排序,运行程序,打印结果如下:
Person [id=1, name=jack, age=18]
Person [id=2, name=paul, age=28]
Person [id=3, name=zion, age=20]
Person [id=4, name=jone, age=30]