前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java8 利用reduce实现将列表中的多个元素的属性求和并返回

java8 利用reduce实现将列表中的多个元素的属性求和并返回

作者头像
青山师
发布2023-05-05 17:33:09
1.4K0
发布2023-05-05 17:33:09
举报
文章被收录于专栏:IT当时语_青山师_JAVA技术栈

利用java8流的特性,我们可以实现list中多个元素的 属性求和 并返回。 案例: 有一个借款待还信息列表,其中每一个借款合同包括:本金、手续费; 现在欲将 所有的本金求和、所有的手续费求和。 我们可以使用java8中的函数式编程,获取list的流,再利用reduce遍历递减方式将同属性(本金、手续费)求和赋予给一个新的list中同类型的对象实例,即得到我们需要的结果:

代码语言:javascript
复制
A a = list.stream()
                .reduce(
                        (x , y) -> new A( (x.getPrincipal() + y.getPrincipal()), (x.getFee() + y.getFee()) ) )
                .orElse( new A(0, 0) );

示例代码如下:

代码语言:javascript
复制
package org.byron4j.eight;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class ReduceTwoObjectAddProp {


    class A{
        int principal = 0;
        int fee = 0;
        public A(int principal, int fee) {
            super();
            this.principal = principal;
            this.fee = fee;
        }
        public A() {
            super();
            // TODO Auto-generated constructor stub
        }
        public int getPrincipal() {
            return principal;
        }
        public void setPrincipal(int principal) {
            this.principal = principal;
        }
        public int getFee() {
            return fee;
        }
        public void setFee(int fee) {
            this.fee = fee;
        }
        @Override
        public String toString() {
            return "A [principal=" + principal + ", fee=" + fee + "]";
        }

    }


    @Test
    public void test() {


        List<A> list = new ArrayList<A>();
        list.add(new A(1, 2));
        list.add(new A(100, 200));

        A a = list.stream()
                .reduce(
                        (x , y) -> new A( (x.getPrincipal() + y.getPrincipal()), (x.getFee() + y.getFee()) ) )
                .orElse( new A(0, 0) );
        System.out.println(a);
    }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档