LIst 排序
4.创建一个Person类,里面有编号、姓名、年龄等属性,创建10个person对象添加到List集合中,按照年龄降序排列
public class List排序 {
public static void main(String[] args) {
ArrayList<Person> person=new ArrayList<Person>();
person.add(new Person("xxx", 6, 185));
person.add(new Person("hhh", 6, 16));
person.add(new Person("jjj", 78, 1800));
person.add(new Person("eee", 18, 145));
方法1
参数为 Comparator比较器
person.sort(new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
if (o1.getAge()> o2.getAge()) {
return 1;
}
// TODO Auto-generated method stub
return -1;
}
});
System.out.println(person);
方法2
JDK1.8之后 lamdar表达式等同于上面的写法的作用,按照person对象的age进行升序排列
Comparator<Person> com
=Comparator.comparing(Person::getAge)
.thenComparing(Person::getHeight);
.reversed();//reversed()反转降序
输出
person.sort(com);
Collections.sort(person,com);
System.out.println(person);
}
}
class Person{
private String name;
private int age;
private int height;
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;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", height=" + height + "]";
}
public Person(String name, int age, int height) {
super();
this.name = name;
this.age = age;
this.height = height;
}
}