要將List對象集合轉為map集合,可以通過stream流的形式快速實現轉換:
//三個Users對象組成一個List集合 List<Users> list = new ArrayList<>(); list.add(Users.builder().userName("11").userId(1).build()); list.add(Users.builder().userName("11").userId(2).build()); list.add(Users.builder().userName("33").userId(3).build()); //將list轉map Map<String, Users> usersMap = list.stream() .collect(Collectors.toMap(Users::getUserName, user -> user)); System.out.println(usersMap.get("11"));
但是上述代碼運行后報了異常:
所以通過stream實現list轉map時,要實現重復的key會被覆蓋,可以使用Function.identity()方法:
//三個Users對象組成一個List集合 List<Users> list = new ArrayList<>(); list.add(Users.builder().userName("11").userId(1).build()); list.add(Users.builder().userName("11").userId(2).build()); list.add(Users.builder().userName("33").userId(3).build()); //將list轉map,這里是出現重復key時,覆蓋前一個 Map<String, Users> usersMap = list.stream() .collect(Collectors.toMap(Users::getUserName, Function.identity(), (user1, user2) -> user2)); System.out.println(usersMap.get("11")); //輸出結果: edu.nf.ch08.entity.Users@41aaedaa