@Test public void test() { List<User> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setId(i); user.setUsername(i + "aaa"); list.add(user); } User user = new User(); user.setId(1); user.setUsername(1+ "aaa"); list.add(user); List<Integer> collect = list.stream().map(User::getId).collect(Collectors.toList()); System.out.println(collect); // (a, b) -> b) 若map存在key,則用b的值覆蓋a的值 Map<Integer, User> map = list.stream().collect(Collectors.toMap(User::getId, Function.identity(), (a, b) -> b)); System.out.println(JSONUtils.toJSONString(map)); Map<Integer, List<User>> integerListMap = list.stream().collect(Collectors.groupingBy(User::getId)); System.out.println(JSONUtils.toJSONString(integerListMap)); }
輸出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1]
{0:{"id":0,"username":"0aaa"},1:{"id":1,"username":"1aaa"},2:{"id":2,"username":"2aaa"},3:{"id":3,"username":"3aaa"},4:{"id":4,"username":"4aaa"},5:{"id":5,"username":"5aaa"},6:{"id":6,"username":"6aaa"},7:{"id":7,"username":"7aaa"},8:{"id":8,"username":"8aaa"},9:{"id":9,"username":"9aaa"}}
{0:[{"id":0,"username":"0aaa"}],1:[{"id":1,"username":"1aaa"},{"id":1,"username":"1aaa"}],2:[{"id":2,"username":"2aaa"}],3:[{"id":3,"username":"3aaa"}],4:[{"id":4,"username":"4aaa"}],5:[{"id":5,"username":"5aaa"}],6:[{"id":6,"username":"6aaa"}],7:[{"id":7,"username":"7aaa"}],8:[{"id":8,"username":"8aaa"}],9:[{"id":9,"username":"9aaa"}]}
選取集合List<User>中的userId,不再需要遍歷List<User>,然後一個一個取值。
選取集合List<User>中的userId,User 組成map,也無需遍歷。
簡化很多代碼