当前位置: 首页 > 知识库问答 >
问题:

防止java 8的map()reduce()中的空指针用于BigDecimal加法[duplicate]

欧阳狐若
2023-03-14

我试图将给定产品的所有价格相加为:

 BigDecimal getTotalPrice(List<Product> products) {
        return products.stream()
                .map(Product::getPrice)
                .peek(bigDecimal -> System.out.println(bigDecimal))
                .reduce(BigDecimal.ZERO, BigDecimal::add);
    }

我试着打印bigDecimal的所有值,每当我们得到值为null时,我们就得到了java。lang.NullPointerException,有没有更好的方法来防止任何类型的异常,从而在Java8中添加?

共有1个答案

令狐嘉禧
2023-03-14

我建议添加中间过滤步骤:

return products.stream()
               .filter(Objects::nonNull) // If products can contain null values
               .map(Product::getPrice)
               .filter(Objects::nonNull) // If price can be null
               .peek(bigDecimal -> System.out.println(bigDecimal))
               .reduce(BigDecimal.ZERO, BigDecimal::add);
 类似资料:
  • 我对映射reduce编程是个新手,从简单的单词计数示例开始我的课程。然而,我正在尝试一种不同的方法。我的hdfs输入文件夹上有两个输入文件。我正在尝试生成类似于 我编写了一个映射器类来将单词和文件名连接在一起,但是当我在文本中设置键值时,它会抛出空指针异常。谁能帮我指点一下我哪里做错了。

  • 目标:练习“.reduce”方法 有3类:x类枚举(A,B,C,D),x类产品(字符串名称,BigDecimal价格,BigDecimal折扣,Category Category)x类订单-产品数量 问题:类App1流操作

  • 问题内容: 我知道如何从-> “转换”一个简单的Java ,即: 现在,我想对地图进行基本相同的操作,即: 解决方案不应限于-> 。就像上面的示例一样,我想调用任何方法(或构造函数)。 问题答案: 它不如列表代码那么好。您不能在通话中构造new ,因此工作会混入通话中。

  • 本文向大家介绍怎样防止指针的越界使用问题? 相关面试题,主要包含被问及怎样防止指针的越界使用问题? 时的应答技巧和注意事项,需要的朋友参考一下 一、怎样防止指针的越界使用问题?  1、 必须让指针指向一个有效的内存地址,  2、 防止数组越界  3、防止向一块内存中拷贝过多的内容  4、 防止使用空指针  5、 防止改变const修改的指针  6、 防止改变指向静态存储区的内容  7、 防止两次释

  • 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念。 map 举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个数组[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map实现如下: 由于map()方法定义在JavaSc

  • Python内建了map()和reduce()函数。 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念。 我们先看map。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。