Stream.reduce (Float, BinaryOperator) BinaryOperator указывает, какой метод функционального интерфейса? - PullRequest
0 голосов
/ 30 января 2019

Например,

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)->sum+price имеет в виду?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Поскольку вы упомянули «функциональный интерфейс метод »: reduce фактически вызывает apply из BiFunction (из которого BinaryOperator расширяется).

0 голосов
/ 30 января 2019

Посмотрите на Stream Javadoc:

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

(sum, price)->sum+price реализует BinaryOperator<Float> в вашем примере.

Этот функциональный интерфейс имеет метод, который принимает два аргумента одного типа (Float в вашем случае) и возвращает результат того же типа.

...