Java8 Stream操做

 map( )  處理管道中數據java

@Test
    public void testJava8Stream() throws Exception {
        List<User> userList = new ArrayList<>();
        userList.add(new User(1, "aaa"));
        userList.add(new User(2, "bbb"));
        userList.add(new User(3, "ccc"));
        User user = new User();

        // lambda 表達式寫法
        List<String> list1 = userList.stream()
                .map(e -> e.getUsername()).collect(Collectors.toList());
        // 對象方法引用寫法
        List<String> list2 = userList.stream()
                .map(User::getUsername).collect(Collectors.toList());
        // 對象集合的 過濾、排序
        List<User> list3 = userList.stream()
                .filter(e -> e.getUsername().equals("aaa"))
                .sorted((a, b) -> a.getId().compareTo(b.getId()))
                .collect(Collectors.toList());
        // A對象集合 轉換成B對象集合
        List<UserInfoDto> list4 = userList.stream()
                .map(u -> BeanCopy.of(u, new UserInfoDto())
                        .copy(BeanUtils::copyProperties)
                        .get())
                .collect(Collectors.toList());

    }

規約 collect(Collectors) 對象集合轉換 Map對象ide

//寫法一: key-序號Id, value-用戶名
        Map<Long, String> map1 = userList.stream()
                .collect(Collectors.toMap(User::getId, User::getUsername));
        // 寫法二:key-序號Id,value-User對象
        Map<Long, User> map2 = userList.stream()
                .collect(Collectors.toMap(User::getId, u -> user));
        // 寫法三: 未u -> user,lambda 表達式的省略寫法,一樣爲:老是把傳入的參數做爲返回值返回
        Map<Long, User> map3 = userList.stream()
                .collect(Collectors.toMap(User::getId, Function.identity()));

中間操做sorted() 排序 比較器 Comparator用法code

public void test1() {
    List<String> list = Arrays.asList("a", "b", "c", "d", "e");
    List<User> userList = new ArrayList<>();
    userList.add(new User(1, "aaa"));
    userList.add(new User(2, "bbb"));
    userList.add(new User(3, "ccc"));

    // 流操做 升序排列 1
    list.stream().sorted(Comparator.comparing(e -> e))
            .collect(Collectors.toList()).forEach(System.out::println);

    // 流操做 自定義對象 升序排列 2
    userList.stream().sorted(Comparator.comparing(User::getGender))
            .collect(Collectors.toList()).forEach(System.out::println);

    // 自定義排列
    userList.stream().sorted((a, b) -> a.getGender().compareTo(b.getGender()))
            .collect(Collectors.toList()).forEach(System.out::println);
}

中間操做 - distinct 濾重對象

相關文章
相關標籤/搜索