Java超級簡單的對集合排序方法Stream.sorted ()


使用java8 流中的sorted() 方法對元素進行降序排序、升序排序、多字段排序

准備測試數據

 // User[id; age; name; Info[salary]]
        List<User> lists = Lists.newArrayList();
        lists.add(new User(1, 24, "張三", new Info("7000")));
        lists.add(new User(2, 22, "李四", new Info("8500")));
        lists.add(new User(3, 24, "王五", new Info("9000")));

        //  整形集合
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

升序

        // 按年齡升序
        List<User> userList = lists.stream()
                .sorted(Comparator.comparing(User::getAge))
                .collect(Collectors.toList());

        List<Integer> numberList = numbers.stream()
                .sorted(Comparator.comparing(Integer::intValue))
                .collect(Collectors.toList());

降序

        // 按年齡降序
        List<User> userList = lists.stream()
                .sorted(Comparator.comparing(User::getAge).reversed())
                .collect(Collectors.toList());

        List<Integer> numberList = numbers.stream()
                .sorted(Comparator.comparing(Integer::intValue).reversed())
                .collect(Collectors.toList());

多字段排序

        // 關鍵字thenComparing
        //  1.先以年齡升序  2.當年齡相同時,在以薪資升序
        List<User> userList = lists.stream()
                .sorted(Comparator.comparing(User::getAge).thenComparing(User::getSalary))
                .collect(Collectors.toList());

多字段即升序又降序排序

        // 關鍵 thenComparing、Comparator.reverseOrder()
        //  1.先以年齡升序  2.當年齡相同時,在以薪資降序
        List<User> userList = lists.stream()
                .sorted(Comparator.comparing(User::getAge).thenComparing(User::getSalary,Comparator.reverseOrder()))
                .collect(Collectors.toList());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM