Stream.reduce(Float,BinaryOperator)BinaryOperator是指哪种功能接口方法?

Ren*_*hek 7 java java-8 java-stream functional-interface

例如,

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); 
Run Code Online (Sandbox Code Playgroud)

这是哪个功能界面,(sum, price)->sum+price是指?

Era*_*ran 5

看看StreamJavadoc:

T reduce(T identity, BinaryOperator<T> accumulator)

(sum, price)->sum+priceBinaryOperator<Float>在你的例子中实现了一个.

此功能接口有一个方法,它接受两个相同类型的参数(Float在您的情况下)并返回相同类型的结果.


Rol*_*and 5

因为你提到的"功能接口方法 ":reduce实际上正在呼叫applyBiFunction(从中BinaryOperator延伸).