Search code examples
javajava-8java-streamfunctional-interface

Stream.reduce(Float,BinaryOperator) BinaryOperator refers which functional interface method?


For Example,

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); 

Here which is the functional interface, (sum, price)->sum+price is referring to?


Solution

  • Because you mentioned "functional interface method": reduce is actually calling apply of BiFunction (from which BinaryOperator extends).