【问题标题】:Sum a list of objects based on BigDecimal field in single line [duplicate]在单行中根据 BigDecimal 字段对对象列表求和 [重复]
【发布时间】:2020-06-02 16:56:30
【问题描述】:

假设我们有:

class Foo {
   public BigDecimal field;
}

我们有一个Foo 实例列表,即List<Foo> list

我们如何从列表中一行中的对象计算field的值的总和?

我发现了使用流的类似情况的示例,但它们处理更简单的情况并且不适用于此;例如计算List<Integer>field 很容易“求和”(int,Integer...)。

【问题讨论】:

    标签: java java-stream


    【解决方案1】:
    list.stream().map(foo -> foo.field).reduce(BigDecimal.ZERO, (a, b) -> a.add(b));
    

    【讨论】:

    • 不起作用,您不能添加Foo 对象
    • .map(Foo::getField).reduce(BigDecial::add).orElse(BigDecimal.ZERO),但这已经被问了这么多次次了。
    • @Eugene Foo 没有“getField”方法
    • @Caner 那么你如何访问field
    • @Caner Horatiu Jeflea 的回答应该有效。你确定你抄对了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多