想实现如图的效果,因为这两个value是一样的,所以想重新排序一下,怎么实现呢?
用java8的stream,谢谢
题主你好,以下是我个人的看法,这个看起来是按照属性进行归类,然后归类后某些属性进行合并的需求,可以采用Collectors.groupingBy
进行分类,这个方法,有多参的,我选择的是两个参数的
// 不考虑合并之后的数据顺序,可以选择这种
// 1. 先用Collectors.groupingBy创建按照label分类的map
// 2. 创建map的规则是,label作为key,value是先把LabelValue转换为value,然后value按照逗号拼接在一起
// 3. 转换成map之后,按照entrySet的方式创建LabelValue
List<LabelValue> 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<String, String> mapEntry){
this.label = mapEntry.getKey();
this.value = mapEntry.getValue();
}
}
仅供参考
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
fixed