当前位置:首页 > 服务端 > Java8对List集合对象某个字段进行排序

Java8对List集合对象某个字段进行排序

2022年11月09日 13:16:12服务端37

1、声明一个测试对象 

import java.time.LocalDate;
import java.util.List;
import lombok.Data;

@Data
public class StudentInfo{

    //名称
    private String name;

    //性别 true男 false女
    private Boolean gender;

    //年龄
    private Integer age;

    //身高
    private Double height;

    //出生日期
    private LocalDate birthday;

}

2、添加一些测试数据

//测试数据,请不要纠结数据的严谨性
List<StudentInfo> studentList = new ArrayList<>();
studentList.add(new StudentInfo("李小明",true,18,1.76,LocalDate.of(2001,3,23)));
studentList.add(new StudentInfo("张小丽",false,18,1.61,LocalDate.of(2001,6,3)));
studentList.add(new StudentInfo("王大朋",true,19,1.82,LocalDate.of(2000,3,11)));
studentList.add(new StudentInfo("陈小跑",false,17,1.67,LocalDate.of(2002,10,18)));

使用年龄进行升序排序

//排序前输出
StudentInfo.printStudents(studentList);
//按年龄排序(Integer类型)
List<StudentInfo> studentsSortName = studentList.stream().sorted(Comparator.comparing(StudentInfo::getAge)).collect(Collectors.toList());
//排序后输出
StudentInfo.printStudents(studentsSortName);

排序后结果

Java8对List集合对象某个字段进行排序 _ JavaClub全栈架构师技术笔记

 使用年龄进行降序排序(使用reversed()方法)

//排序前输出
StudentInfo.printStudents(studentList);
//按年龄排序(Integer类型)
List<StudentInfo> studentsSortName = studentList.stream().sorted(Comparator.comparing(StudentInfo::getAge).reversed()).collect(Collectors.toList());
//排序后输出
StudentInfo.printStudents(studentsSortName);

排序后结果

Java8对List集合对象某个字段进行排序 _ JavaClub全栈架构师技术笔记

 使用年龄进行降序排序,年龄相同再使用身高升序排序

//排序前输出
        StudentInfo.printStudents(studentList);
        //按年龄排序(Integer类型)
        List<StudentInfo> studentsSortName = studentList.stream()
                .sorted(Comparator.comparing(StudentInfo::getAge).reversed().thenComparing(StudentInfo::getHeight))
                .collect(Collectors.toList());
        //排序后输出
        StudentInfo.printStudents(studentsSortName);

排序后结果

Java8对List集合对象某个字段进行排序 _ JavaClub全栈架构师技术笔记

4、最后一个方法使用lambda表达式进行排序

声明一个对象

class User{
        private Integer userId;
        private String userName;

        public Integer getUserId() {
            return userId;
        }

        public void setUserId(Integer userId) {
            this.userId = userId;
        }

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }

        public User(Integer userId, String userName) {
            this.userId = userId;
            this.userName = userName;
        }

        public User() {
        }

        @Override
        public String toString() {
            return "User{" +
                    "userId=" + userId +
                    ", userName='" + userName + '\'' +
                    '}';
        }
    }

 

测试

@Test
    public void lambdaTest1(){
        List<User> list = new ArrayList<>();
        list.add(new User(1,"张三"));
        list.add(new User(4,"赵六"));
        list.add(new User(2,"李四"));
        list.add(new User(3,"王五"));
            
        //条件删除
        list.removeIf(user -> user.getUserId() == 3);
        System.out.println("--------------排序前");
        list.forEach(user -> {
            System.out.println(user);
        });
        list.sort((user1,user2)->user1.getUserId() - user2.getUserId());
        System.out.println("_-------------------正序排序后");
        list.forEach(user -> {
            System.out.println(user);
        });

        System.out.println("--------------------倒序排序后:");
        list.sort((((o1, o2) -> o2.getUserId() - o1.getUserId())));
        list.forEach(user -> {
            System.out.println(user);
        });
    }

输出结果

Java8对List集合对象某个字段进行排序 _ JavaClub全栈架构师技术笔记

 

 

作者:Romantic_321
来源链接:https://blog.csdn.net/Romantic_321/article/details/107252796

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/68884.html

标签: ListJava
分享给朋友: