lambda排序小记
一、按照几个字段分别排序:
Student:
package com.model;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@AllArgsConstructor
public class Student {
private String name;
private int age;
private String classroom;
}
package com.test.lamdba;
import com.model.Student;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class TestComparator {
public static void main(String[] args) {
List<Student> studentList = new ArrayList<>();
studentList.add(new Student("zhangsan", 10, "A"));
studentList.add(new Student("wangwei", 12, "D"));
studentList.add(new Student("wangwei", 11, "D"));
studentList.add(new Student("lisi", 14, "F"));
studentList.add(new Student("lisi", 14, "C"));
sort(studentList);
System.out.println(studentList);
}
/**
* 先按学生的姓名自然排序
* 再按年龄排序
* 再按班级号逆序排序
*
* @param studentList
*/
private static void sort(List<Student> studentList) {
studentList.sort(Comparator.comparing(Student::getName, Comparator.naturalOrder()) //这样去掉naturalOrder其实也一样,因为natureOrder的排序调的就是String的compareTo
.thenComparingInt(Student::getAge)
.thenComparing(Student::getClassroom, Comparator.reverseOrder())
);
}
}
打印:
[
Student(name=lisi, age=14, classroom=F),
Student(name=lisi, age=14, classroom=C),
Student(name=wangwei, age=11, classroom=D),
Student(name=wangwei, age=12, classroom=D),
Student(name=zhangsan, age=10, classroom=A)
]
--
分类:
java8基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?