@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,也无需遍历。
简化很多代码