java8新特性:利用Lambda處理List集合


Java 8新增的Lambda表達式,我們可以用簡潔高效的代碼來處理List。

1、遍歷

復制代碼
 public static void main(String[] args) {
        List<User> userList = Lists.newArrayList();

        User user1 = new User(1L, "張三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);

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

    }
復制代碼

運行結果:

2、list轉為Map

復制代碼
 public static void main(String[] args) {
        List<User> userList = Lists.newArrayList();//存放user對象集合

        User user1 = new User(1L, "張三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);

        //ID為key,轉為Map
        Map<Long,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, a -> a,(k1, k2)->k1));
        System.out.println(userMap);

    }
復制代碼

運行結果:

3、將List分組:List里面的對象元素,以某個屬性來分組

復制代碼
  public static void main(String[] args) {
        List<User> userList = Lists.newArrayList();//存放user對象集合

        User user1 = new User(1L, "張三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);
        User user4 = new User(4L, "張三", 22);
        User user5 = new User(5L, "李四", 20);
        User user6 = new User(6L, "王五", 28);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        userList.add(user5);
        userList.add(user6);


        //根據name來將userList分組
        Map<String, List<User>> groupBy = userList.stream().collect(Collectors.groupingBy(User::getName));
        System.out.println(groupBy);

    }
復制代碼

運行結果:

4、過濾:從集合中過濾出來符合條件的元素

復制代碼
 public static void main(String[] args) {
        List<User> userList = Lists.newArrayList();//存放user對象集合

        User user1 = new User(1L, "張三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);
        User user4 = new User(4L, "張三", 22);
        User user5 = new User(5L, "李四", 20);
        User user6 = new User(6L, "王五", 28);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        userList.add(user5);
        userList.add(user6);


        //取出名字為張三的用戶
        List<User> filterList = userList.stream().filter(user -> user.getName().equals("張三")).collect(Collectors.toList());
        filterList.stream().forEach(user ->{
            System.out.println(user.getName());
        });

    }
復制代碼

運行結果:

5、求和:將集合中的數據按照某個屬性求和

復制代碼
 public static void main(String[] args) {
        List<User> userList = Lists.newArrayList();//存放user對象集合

        User user1 = new User(1L, "張三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);
        User user4 = new User(4L, "張三", 22);
        User user5 = new User(5L, "李四", 20);
        User user6 = new User(6L, "王五", 28);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        userList.add(user5);
        userList.add(user6);


        //取出名字為張三的用戶
        int totalAge = userList.stream().mapToInt(User::getAge).sum();
        System.out.println("和:" + totalAge);

    }
復制代碼

運行結果:

 6、從List轉為Map,key與value 一 一對應

復制代碼
 public static void main(String[] args) {
        List<User> userList = Lists.newArrayList();

        User user1 = new User(1L, "張三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);
        User user4 = new User(4L, "張三", 22);
        User user5 = new User(5L, "李四", 20);
        User user6 = new User(6L, "王五", 28);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        userList.add(user5);
        userList.add(user6);

        Map<Long/*Id*/,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, user -> user));
        System.out.println("toMap:" + JSONArray.toJSONString(userMap));

    }
復制代碼

運行結果:


免責聲明!

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



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