需求:按照特定条件,将集合中的元素做分类合并。
举例:
[{item:"a",
code:"code1",
num:10,
sum:20}
,
{item:"a",
code:"code2",
num:5,
sum:15}
}
,
{item:"b",
code:"code3",
num:10,
sum:20}]
将item相同的元素的num值和sum值合并,则合并结果为:
[{item:"a",
code:"code1",
num:15,
sum:35}
,
{item:"b",
code:"code3",
num:10,
sum:20}]
代码实现
@Data
public class Entity {
private String item;
private String code;
private int num;
private int sum;
}
private Listmerge(){ Entity entity1 = new Entity("a", "code1", 10, 20); Entity entity2 = new Entity("a", "code2", 5, 15); Entity entity3 = new Entity("b", "code3", 10, 20); ArrayList entities = new ArrayList<>(); entities.add(entity1); entities.add(entity2); entities.add(entity3); ArrayList entitiesMerge = new ArrayList<>(entities.stream().collect(Collectors.toMap(Entity::getItem, a -> a, (i1, i2) -> { i1.setNum(i1.getNum() + i2.getNum()); i1.setSum(i1.getSum() + i2.getSum()); return i1; })).values()); return entitiesMerge; }
得到entitiesMerge 的值为
Entity{item='a', code='code1', num=15, sum=35}
Entity{item='b', code='code3', num=10, sum=20}



