import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Person {
private int id;
private int age;
private int wage; //工资
private String name;
public Person(int id, String name, int age,int wage) {
this.id = id;
this.age = age;
this.wage = wage;
this.name = name;
}
public Person() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getWage() {
return wage;
}
public void setWage(int wage) {
this.wage = wage;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person [id=" + id + ", age=" + age + ", wage=" + wage + ", name=" + name + "]"+"\n";
}
public static void main(String[] args) {
Person p1 = new Person(0, "p0",12,200);
Person p2 = new Person(1, "p1",12,300);
Person p3 = new Person(1, "p2",12,200);
Person p4 = new Person(3, "p3",12,200);
Person p5 = new Person(3, "p4",12,201);
Person p6 = new Person(3, "p5",11,200);
List<Person> personList = new ArrayList<>();
personList.add(p1);
personList.add(p2);
personList.add(p3);
personList.add(p4);
personList.add(p5);
personList.add(p6);
//按id从大到小排序(注意p.getId前加了负号)
//Function<Person, Integer> comparingById = p -> -p.getId();
//按id从小到大排序
Function<Person, Integer> comparingById = p -> p.getId();
//按Age从大到小排序
Function<Person, Integer> comparingByAge = p -> -p.getAge();
//依次多条件比较:id(小到大)->age(大到小)->wage(大到小)
personList = personList.stream()
.sorted(
Comparator.comparing(comparingById) //
.thenComparing(comparingByAge) // .thenComparing(Person::getAge)
//自定义工资比较,大->小
.thenComparing((p->p),new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
if(o1.getWage() == o2.getWage()) {
return 0;
}else if(o1.getWage() < o2.getWage()) {
return 1;
}else {
return -1;
}
}
})
)
.collect(Collectors.toList());
System.out.println(personList);
}
}
java8的stream用于排序
最新推荐文章于 2025-04-20 21:29:12 发布