【问题标题】:Stream.reduce(Float,BinaryOperator) BinaryOperator refers which functional interface method?Stream.reduce(Float,BinaryOperator) BinaryOperator 指的是哪个函数式接口方​​法?
【发布时间】:2019-01-30 09:37:46
【问题描述】:

例如,

List<Product> productsList = new ArrayList<Product>();  
productsList.add(new Product(1,"HP Laptop",25000f));  
productsList.add(new Product(2,"Dell Laptop",30000f));  
productsList.add(new Product(3,"Lenevo Laptop",28000f));  
productsList.add(new Product(4,"Sony Laptop",28000f));  
productsList.add(new Product(5,"Apple Laptop",90000f));  

Float totalPrice = productsList.stream()  
                               .map(product->product.price)  
                               .reduce(0.0f,(sum, price)->sum+price);   
System.out.println(totalPrice); 

这里是哪个功能接口,(sum, price)-&gt;sum+price指的是?

【问题讨论】:

  • 只是将评论移到自己的答案然后...

标签: java java-8 java-stream functional-interface


【解决方案1】:

因为你提到了“功能接口方法”:reduce实际上是在调用apply of BiFunction(从BinaryOperator扩展)。

【讨论】:

    【解决方案2】:

    查看StreamJavadoc:

    T reduce(T identity, BinaryOperator&lt;T&gt; accumulator)

    (sum, price)-&gt;sum+price 在您的示例中实现了 BinaryOperator&lt;Float&gt;

    这个函数式接口有一个方法,它接受两个相同类型的参数(在你的例子中是Float)并返回相同类型的结果。

    【讨论】:

      猜你喜欢
      • 2017-10-22
      • 1970-01-01
      • 2017-07-17
      • 2018-01-01
      • 1970-01-01
      • 2018-09-16
      • 2011-08-23
      • 1970-01-01
      • 2020-08-06
      相关资源
      最近更新 更多