【Java 8】一行代码实现求和操作

对列表里某个类中的某个属性进行求和操作非常常见。在Java 8诞生前,常用for循环手动累加,往往要写上三四行代码,不够简练。

参考链接
比如有个类:

class Hhd{
    private String aStr;
    private double bDou;

    public String getaStr() {
        return aStr;
    }

    public void setaStr(String aStr) {
        this.aStr = aStr;
    }

    public double getbDou() {
        return bDou;
    }

    public void setbDou(double bDou) {
        this.bDou = bDou;
    }
}

求和操作一行代码便可完成,并且有一下四种方式,挑喜欢的就好~:

    @Test
    public void TestStreamSum() {
        Hhd a = new Hhd();
        a.setbDou(1.);
        Hhd b = new Hhd();
        b.setbDou(233.);

        List<Hhd> aList = new ArrayList<>();
        aList.add(a);
        aList.add(b);

        double allSum = aList.stream().map(Hhd::getbDou).reduce(0., Double::sum);
        double allSum_1 = aList.stream().map(Hhd::getbDou).reduce(0., (x, y) -> x + y);
        double allSum_2 = aList.stream().collect(Collectors.summingDouble(Hhd::getbDou));
        double allSum_3 = aList.stream().mapToDouble(Hhd::getbDou).sum();
        System.out.println(allSum);
        System.out.println(allSum_1);
        System.out.println(allSum_2);
        System.out.println(allSum_3);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,643评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 电影真是个很神奇的东西,让人在短短的一百多分钟时间可以穿越或者旁观很震撼场景经历,带给人非同一般的视觉,听觉和幻觉...
    民哥_财富教练阅读 148评论 0 0
  • 近年来,因维修成本、人力成本普遍上涨,传统物业公司,尤其是那些独立运营的中小物业公司,生存举步维艰。 中奥到...
    伟娓道来阅读 2,270评论 4 4
  • 此生如梦,凌乱在年华。初始雨打芭蕉下,梦醒,人去楼空,流芳错半年。 此生如花。只言片语在半夏。挫败清泉石中,花落,...
    蓝笔芯女孩阅读 376评论 0 2