题主你好,以下是我个人的看法,这个看起来是按照属性进行归类,然后归类后某些属性进行合并的需求,可以采用Collectors.groupingBy进行分类,这个方法,有多参的,我选择的是两个参数的
第一个参数分类的属性
第二个参数是分类后的对象如何拼装
// 不考虑合并之后的数据顺序,可以选择这种
// 1. 先用Collectors.groupingBy创建按照label分类的map
// 2. 创建map的规则是,label作为key,value是先把LabelValue转换为value,然后value按照逗号拼接在一起
// 3. 转换成map之后,按照entrySet的方式创建LabelValue
List labelValues2 = labelValues.stream()
.collect(Collectors.groupingBy(LabelValue::getLabel, Collectors.mapping(LabelValue::getValue, Collectors.joining(","))))
.entrySet()
.stream()
.map(LabelValue::new)
.collect(Collectors.toList());
当然我给LabelValue也新增了一个构造方法
@Getter
@Setter
@AllArgsConstructor
public class LabelValue {
private String label;
private String value;
public LabelValue(Map.Entry mapEntry){
this.label = mapEntry.getKey();
this.value = mapEntry.getValue();
}
}
仅供参考