Java SE 8 Programmer II — Question 80
Given:
public class Product {
int id; int price;
public Product (int id, int price) {
this.id = id;
this.price = price;
}
Public String toString () { return id + ":" + price;)
}
and the code fragment:
List<Product> products = new ArrayList <> (Arrays.asList(new Product(1, 10), new Product (2, 30), new Product (3, 20));
Product p = products.stream().reduce(new Product (4, 0), (p1, p2) -> { p1.price+=p2.price; return new Product (p1.id, p1.price);}); products.add(p); products.stream().parallel()
.reduce((p1, p2) - > p1.price > p2.price ? p1 : p2)
.ifPresent(System.out: :println);
What is the result?
Answer options
- A. 4:60
- B. 2:30
- C. 4:60 2:30 3:20 1:10
- D. 4:0
- E. The program prints nothing
Correct answer: C
Explanation
The correct answer is C, as the stream operations aggregate the prices of all products, resulting in a new product with a price of 60. The subsequent parallel reduction identifies the product with the highest price, which includes all products in the output. The other options are incorrect as they either misrepresent the output or fail to capture the full result of the stream operations.