1,建一个测试实体类
package com.xiaoli.security.service;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class TestStreamEnttiry {
private String groupCode;
private String groupName;
private BigDecimal amt;
}
2,写测试代码进行测试
package com.xiaoli.security.service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class TestStream {
public static void main(String[] args) {
List<TestStreamEnttiry> dfsfs= new ArrayList<>();
TestStreamEnttiry testStreamEnttiry = new TestStreamEnttiry();
TestStreamEnttiry testStreamEnttiry1 = new TestStreamEnttiry();
TestStreamEnttiry testStreamEnttiry2 = new TestStreamEnttiry();
TestStreamEnttiry testStreamEnttiry3 = new TestStreamEnttiry();
TestStreamEnttiry testStreamEnttiry4 = new TestStreamEnttiry();
testStreamEnttiry.setGroupCode("OCR01");
testStreamEnttiry.setAmt(new BigDecimal("0.2"));
testStreamEnttiry1.setGroupCode("OCR01");
testStreamEnttiry1.setAmt(new BigDecimal("0.7"));
testStreamEnttiry2.setGroupCode("OCR02");
testStreamEnttiry2.setAmt(new BigDecimal("0.6"));
testStreamEnttiry3.setGroupCode("OCR02");
testStreamEnttiry3.setAmt(new BigDecimal("0.2"));
testStreamEnttiry4.setGroupCode("OCR03");
testStreamEnttiry4.setAmt(null);
dfsfs.add(testStreamEnttiry);
dfsfs.add(testStreamEnttiry1);
dfsfs.add(testStreamEnttiry2);
dfsfs.add(testStreamEnttiry3);
dfsfs.add(testStreamEnttiry4);
Map<String, BigDecimal> collect = dfsfs.parallelStream()
.collect(Collectors.groupingBy(TestStreamEnttiry::getGroupCode,
Collectors.reducing(new BigDecimal("0"),
t->{
if (t.getAmt()==null) {
return new BigDecimal("0");
}
return t.getAmt();
}, (v1, v2) -> v1.add(v2))));
System.out.println(collect);
}
}
3,运行查看结果
{OCR01=0.9, OCR02=0.8, OCR03=0}