jdk1.8 lambda表達式demo代碼

//測試數據寫入
        List<User2> lstUsersAll = new ArrayList<>();
        User2 user2 = new User2("張三", 168.4, 20);
        lstUsersAll.add(user2);
        user2 = new User2("小明", 170d, 17);
        lstUsersAll.add(user2);
        user2 = new User2("小紅", 162.2, 22);
        lstUsersAll.add(user2);

        //把list裏知足某個條件的成員輸出到新的list
        //輸出用戶名等於張三的
        List<User2> lstUsers = lstUsersAll.stream().filter(t -> "張三".equals(t.getName())).collect(Collectors.toList());

        //以上代碼,若是用普通的for循環實現,須要4行代碼,lambda精簡了75%代碼行數
        List<User2> lstUsers1 = new ArrayList<>();
        for (User2 users : lstUsersAll) {
            if ("張三".equals(users.getName())) {
                lstUsers1.add(users);
            }
        }

        //把list裏知足某個條件的成員輸出,且只輸出一個(用於業務邏輯只有一個結果的狀況,省去了獲取list後還要get(0))
        //輸出用戶名等於張三的
        User2 users = lstUsersAll.stream().filter(t -> "張三".equals(t.getName())).findFirst().orElse(null);

        //把list裏知足某個條件的成員,只輸出某個屬性(變量)
        //輸出用戶名等於張三的用戶名
        List<String> lstName = lstUsersAll.stream().filter(t -> "張三".equals(t.getName())).map(User2::getName).collect(Collectors.toList());

        //統計name屬性的全部惟一值,並只輸出name屬性到List
        List<String> lstName2 = lstUsersAll.stream().map(User2::getName).distinct().collect(Collectors.toList());

        //排序
        //如下是對age排升序
        List<User2> lstUsersSort = lstUsersAll.stream().sorted(Comparator.comparing(User2::getAge)).collect(Collectors.toList());
        //如下是對age排倒序,加了reversed方法就是倒序
        lstUsersSort = lstUsersAll.stream().sorted(Comparator.comparing(User2::getAge).reversed()).collect(Collectors.toList());
        //多屬性排序,從第二個排序屬性開始使用thenComparing
        lstUsersSort = lstUsersAll.stream().sorted(Comparator.comparing(User2::getAge).thenComparing(User2::getHeight)).collect(Collectors.toList());

        //刪除
        //刪除用戶名等於張三的
        lstUsersAll.removeIf(t -> "張三".equals(t.getName()));
相關文章
相關標籤/搜索