InfoPubParam param1 = new InfoPubParam();
param1.setIsbn("1234");
param1.setAmountIsbn(5);
InfoPubParam param2 = new InfoPubParam();
param2.setIsbn("123434");
param2.setAmountIsbn(2);
InfoPubParam param3 = new InfoPubParam();
param3.setIsbn("156784");
param3.setAmountIsbn(4);
InfoPubParam param4 = new InfoPubParam();
param4.setIsbn("1234");
param4.setAmountIsbn(3);
List<InfoPubParam> paramList =new ArrayList<>();
paramList .add(param1);
paramList .add(param2);
paramList .add(param3);
paramList .add(param4);
想将这个list里的相同的isbn的数量加到一起合并为一条,麻烦帮忙看看
List<InfoPubParam> paramList =new ArrayList<>();
paramList.stream()..collect(Collectors.toMap(InfoPubParam::getId, o -> o, (o1,o2)-> {
if(Objects.equals(o1.getIsbn(),o2.getIsbn())){
o1.setAmountIsbn(o1.getAmountIsbn()+o2.getAmountIsbn());
return o1;
}
return o1;
})).values().stream().collect(Collectors.toList());
手打的,因为看不到你的实体类数据结构,大概就是这个思路
Map<String, InfoPubParam> infoPubParamMap = paramList.stream().collect(Collectors.toMap(InfoPubParam::getIsbn, Function.identity(), (a, b) -> {
a.setAmountIsbn(a.getAmountIsbn() + b.getAmountIsbn());
return a;
}));
//{156784=InfoPubParam{isbn='156784', amountIsbn=4}, 123434=InfoPubParam{isbn='123434', amountIsbn=2}, 1234=InfoPubParam{isbn='1234', amountIsbn=8}}
System.out.println(infoPubParamMap);
for (Map.Entry<String, InfoPubParam> entry : infoPubParamMap.entrySet()) {
//156784===InfoPubParam{isbn='156784', amountIsbn=4}
//123434===InfoPubParam{isbn='123434', amountIsbn=2}
//1234===InfoPubParam{isbn='1234', amountIsbn=8}
System.out.println(entry.getKey() + "===" + entry.getValue());
}
```java
List<InfoPubParam> paramList =new ArrayList<>();
paramList.stream()..collect(Collectors.toMap(param::getIsbn, o -> o, (o1,o2)-> {
o1.setAmountIsbn(o1.getAmountIsbn()+o2.getAmountIsbn());
return o1;
})).values().stream().collect(Collectors.toList());
```
这样试试?