使用java8的stream對數組進行求和


1、對BigDecimal類型的值求和。

List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> stu1 = new HashMap<String, Object>();
stu1.put("name", "張三");
stu1.put("score", new BigDecimal(80));
list.add(stu1);
Map<String,Object> stu2 = new HashMap<String, Object>();
stu2.put("name", "李斯");
stu2.put("score", new BigDecimal(90));
list.add(stu2);
Map<String,Object> stu3 = new HashMap<String, Object>();
stu3.put("name", "王武");
stu3.put("score", new BigDecimal(60));
list.add(stu3);

BigDecimal sum = list.stream().map(
x -> new BigDecimal(x.get("score").toString())
).reduce(BigDecimal.ZERO,BigDecimal::add);

System.out.println("三人總分:"+sum);

2、對double型的值求和。

List<DisProductPo> list2 = new ArrayList<>();
DisProductPo p1 = new DisProductPo();
p1.setPrintvalue(120);
p1.setViewspotticketname("產品1");
list2.add(p1);
DisProductPo p2 = new DisProductPo();
p2.setPrintvalue(80);
p2.setViewspotticketname("產品2");
list2.add(p2);
DisProductPo p3 = new DisProductPo();
p3.setPrintvalue(50);
p3.setViewspotticketname("產品3");
list2.add(p3);

double sum1 = list2.stream().collect(Collectors.summingDouble(x -> ((Double) x.getPrintvalue())));
double sum2 = list2.stream().mapToDouble(DisProductPo::getPrintvalue).sum();

System.out.println("總價格:"+sum1+"--"+sum2);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM