List转换为map
如,一个用户列表List<User>转换为Map<id, User>
List<User> userList = UserMapper.getUserList();
...
Map<Integer, User> userMap = userList.stream()
.collect(Collectors.toMap(
User::getId, user -> user)
);
此时如果userList有重复user会报错,那么可以这样处理:
List<User> userList = UserMapper.getUserList();
...
Map<Integer, User> userMap = userList.stream()
.collect(Collectors.toMap(
User::getId, user -> user, (v1, v2) -> v2)
);
也就是当map key重复时用v2覆盖v1.
单独取对象List的某项属性
比较简单,直接上代码
(从User列表取全部Id)
List<User> userList = UserMapper.getUserList();
...
//map里的方法可以自己定义方法来调用
List<Integer> ids = userList.stream().map(User::getId).collect(Collectors.toList());
根据指定属性排序
stream().sort()结合Comparator可以用于排序
List<User> userList = UserMapper.getUserList();
...
//根据score升序排序
List<User> sortedUserList = userList.stream().sort(Comparator.comparing(User::getScore)).collect(Collectors.toList());
//根据score降序排序
List<User> sortedUserList = userList.stream().sort(Comparator.comparing(User::getScore).reversed()).collect(Collectors.toList());