Java8 stream使用技巧简单整理

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());
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容