Java如何利用lamda表达式给对象列表排序

2024-11-05 21:39:40

1、本文以对Student对象的age属性进行排序为例进行介绍

Java如何利用lamda表达式给对象列表排序

2、通过以下代码来初始化一个List<Student>:List<Student> studentList = new ArrayList<Student>();Random ran=new Random();for(int i = 0;i < 10;i++){ Student student = new Student(); student.setAge(abs(ran.nextInt()%100)); studentList.add(student);}可以注意到,以上随机生成的学生年龄age在0-99之间。

Java如何利用lamda表达式给对象列表排序

3、通过集合工具类的sort方法可以传入lambda表达式对集合进行排序Collections.sort(studentList,(Student a,Student b) -> a.getAge() - b.getAge());

Java如何利用lamda表达式给对象列表排序

4、运行测试代码,可以看到集合已经按升序排列完毕,如果需要降序排列,则将Lambda表达式改为(Student a,Student b) -> b.getAge() - a.getAge()即可

Java如何利用lamda表达式给对象列表排序

5、为了让代码更容易理解,我们可以将核心排序代码替换为studentList.sort((Student a, Student b) -> a.getAge() - b.getAge());

Java如何利用lamda表达式给对象列表排序

6、由于采用了List的sort方法,JAVA可以自动推断出lambda表达式的参数类型,所以我们可以直接将Lambda表达式中的Student类型声明去掉,排序代码便可简化为studentList.sort((a, b) -> a.getAge() - b.getAge())

Java如何利用lamda表达式给对象列表排序

7、最终,我们还可以将以上Lambda表达式精简为函数式接口来实现排序,核心代码为studentList.sort(Comparator.comparingInt(Student::getAge));当然,通过import static java.util.Comparator.comparingInt引入静态方法后,排序代码可以继续精简为studentList.sort(comparingInt(Student::getAge))

Java如何利用lamda表达式给对象列表排序Java如何利用lamda表达式给对象列表排序
猜你喜欢