java集合用stream流转Map的两种常见转化情况
基本类对象
@Data
public class BusinessRuleTemplateTaskDTO {
private Long id;//主键,唯一性
private Long basicTaskId;//子表主键,存在多值
}
第一种转化情况(key-类对象):
List<BusinessRuleTemplateTaskDTO> waitHandledList=new ArrayList<>();//我先以空集合表示,此处应为真正需要处理的集合本身
Map<Long, BusinessRuleTemplateTaskDTO > map= waitHandledList.stream().collect(Collectors.toMap(BusinessRuleTemplateTaskDTO ::getId, o -> o));
第二种转化情况(key-集合对象):
List<BusinessRuleTemplateTaskDTO> waitHandledList=new ArrayList<>();//我先以空集合表示,此处应为真正需要处理的集合本身
Map<Long, List<BusinessRuleTemplateTaskDTO>> map = waitHandledList.stream().collect(Collectors.groupingBy(BusinessRuleTemplateTaskDTO::basicTaskId));
for (Map.Entry<Long, List<BusinessRuleTemplateTaskDTO>> entry : map.entrySet()) {
List<BusinessRuleTemplateTaskDTO> list = entry.getValue();
}