本文源码可运行的 JDK 版本要求:JDK 1.8 +
一般在业务开发中,开发者会先通过 ORM 框架查询数据库数据得到数据的 List 集合,再该业务数据集合做如下处理:
List 集合转 Map 集合
按照 List 集合元素中某个属性将 List 集合转 Map 集合
在 JDK 1.8 版本中可以使用 stream 快速将 list 转 map:
1 | // 第一种 直接返回user本身 |
笔者利用上述代码进行二次封装,简化了判空及转 map 时填写 .stream().collect… 等重复的代码。
1 | public class DataTool { |
源码参见:src/main/java/org/woodwhales/business/DataTool.java
List 集合分组
List 集合按照某种规则进行分组
在 JDK 1.8 版本中可以使用 stream 快速将 list 分组:
1 | Map<String, List<User>> group = list.stream().collect(Collectors.groupingBy(User::getType)); |
笔者利用上述代码进行二次封装,简化了判空及转 map 时填写 .stream().collect… 等重复的代码。
1 | public class DataTool { |
源码参见:src/main/java/org/woodwhales/business/DataTool.java
业务数据去重
List 集合按照指定属性去重(其中可能存在要去重的属性不存在,即“无效的”数据)。
利用 Map 集合存入元素方法 put() 的特性:已存在则返回旧的元素,不存在则返回空。
1 | public class DataTool { |
源码参见:src/main/java/org/woodwhales/business/DataTool.java
枚举转 map 集合
根据枚举中某个属性进行枚举转 map 集合。
利用 EnumSet 类的 allOf() 方法,可以根据枚举的 Class 类型获取该枚举的所有枚举实例。当拿到集合枚举数据就可以使用 stream 进行集合转 map。
1 | public class DataTool { |