List集合中按照对象属性值排序

    public static void main(String[] args) {
        List<User> userList = new ArrayList<>();
        User user1 = new User();
        user1.setNickName("李白1");
        user1.setScore(21);
        user1.setSize(1);

        userList.add(user1);

        User user2 = new User();
        user2.setNickName("李白2");
        user2.setScore(22);
        user2.setSize(2);
        userList.add(user2);

        User user3 = new User();
        user3.setNickName("李白3");
        user3.setScore(20);
        user3.setSize(3);
        userList.add(user3);

        User user4 = new User();
        user4.setNickName("李白4");
        user4.setScore(21);
        user4.setSize(4);
        userList.add(user4);

        User user5 = new User();
        user5.setNickName("李白5");
        user5.setScore(25);
        user5.setSize(5);
        userList.add(user5);

        userList.stream().forEach(user -> {
            System.out.println(user.getNickName());
        });
        System.out.println("================================");

        userList.sort((u1,u2)->{
            /** 按照分数降序排序(分数相等不处理) */
            return new Integer(u2.getScore()).compareTo(u1.getScore());
        });

        userList.stream().forEach(user -> {
            System.out.println(user.getNickName());
        });
       System.out.println("================================");

        userList.sort((u1,u2)->{
            /** 按照分数升序排(分数相等不处理) */
            return new Integer(u1.getScore()).compareTo(u2.getScore());
        });
        userList.stream().forEach(user -> {
            System.out.println(user.getNickName());
        });
       System.out.println("================================");


        userList.sort((u1,u2)->{
            if(!u2.getScore().equals(u1.getScore())) {
                /** 分数不相同按照分数降序排序 */
                return new Integer(u2.getScore()).compareTo(u1.getScore());
            } else {
                /** 分数相同按照积分降序排序 */
                return u2.getSize().compareTo(u1.getSize());
            }
        });

        userList.stream().forEach(user -> {
            System.out.println(user.getNickName());
        });

    }

结果:

李白1
李白2
李白3
李白4
李白5
====================================
李白5
李白2
李白1
李白4
李白3
====================================
李白3
李白1
李白4
李白2
李白5
====================================
李白5
李白2
李白4
李白1
李白3


猜你喜欢

转载自blog.csdn.net/qq_40074764/article/details/80091210