需求说明
一张数据表中需要多个字段作为分组条件,进行归类整理,存储在Map中,如何实现?
实现逻辑
假设:表名为my_table
,两个字段分别为code
、type
第一步:获取table中的所有数据
List\<MyTableEntity\> myTableList = MyTableMapper.list();
补充说明:MyTableEntity
是数据库表对应的实体类
第二步:根据code
和type
对my_table
中的数据进行归类整理
Map<String, List<MyTableEntity>> codeAndTypeGroup = myTableList.stream().collect(Collectors.groupingBy(item-> item.getCode()+ "+" + StringUtils.defaultIfBlank(item.getType(), "")));
补充说明:
1.使用stream()方法将这个集合转化为一个流;
2.collect方法用于收集流中的元素,并通过Collectors.groupingBy来进行分组操作;
3.分组的键是通过getCode()
和getType()
代码拼接而成的字符串,如果getType()
为空,则用空字符串""代替(按实际需求而定)。
4.分组后的结果存储在一个 Map<String, List<MyTableEntity>>
类型的变量codeAndTypeGroup
中,其中键是拼接的字符串,值是一个列表,列表中存放的是具有相同键的所有MyTableEntity
对象。
总结:这段代码的目的是根据指定字段对表中数据进行归类整理,无论几个字段作为分组条件都能使用这个方式实现。