场景:List循环遍历取数非常繁琐,要遍历多次,可能还存在嵌套循环的场景。那么是否能把List的数据变成Map的格式,
或者提取出ID列表。java8提供一种优雅的转化方式,如下:
@Test
void testJava8() {
List<User> userList = new ArrayList<>();
userList.add(new User(1001,"zhangsan"));
userList.add(new User(1002,"lisi"));
userList.add(new User(1003,"wangwu"));
//把 List<User>中,以User的某一个字段为维度,提取出一个 List
//[1001, 1002, 1003]
List<Integer> list = userList.stream().map(User::getUserId).collect(Collectors.toList());
System.out.println(list);
//{1001=zhangsan, 1002=lisi, 1003=wangwu}
Map<Integer, String> map = userList.stream().collect(Collectors.toMap(User::getUserId, User::getName));
System.out.println(map);
//{1001=User(userId=1001, name=zhangsan), 1002=User(userId=1002, name=lisi), 1003=User(userId=1003, name=wangwu)}
Map<Integer, User> userMap = userList.stream().collect(Collectors.toMap(User::getUserId, user -> user));
System.out.println(userMap);
}