【发布时间】:2020-09-21 15:59:33
【问题描述】:
任务:计算 List orderPositions 中类别 A 的产品价格总和。
目标:练习“.reduce”方法
有 3 个类: x 类别枚举(A、B、C、D), x 产品(字符串名称、BigDecimal 价格、BigDecimal 折扣、类别类别) x OrderPositin - 产品数量
问题:App1 类流操作
代码如下
public class Product {
private String name;
private BigDecimal price;
private BigDecimal discount;
private Category category;
public Product(String name, BigDecimal price, BigDecimal discount, Category category) {
this.name = name;
this.price = price;
this.discount = discount;
this.category = category;
}
public class OrderPosition {
private Product product;
private int quantity;
public OrderPosition() {
}
public OrderPosition(Product product, int quantity) {
this.product = product;
this.quantity = quantity;
}
public enum Category {
A, B, C, D
}
public class App1 {
public static void main(String[] args) {
List<OrderPosition> orderPositions = List.of(
new OrderPosition(new Product("Szynka", new BigDecimal("25"),BigDecimal.ZERO, Category.A), 10),
new OrderPosition(new Product("Ser", new BigDecimal("25.5"),BigDecimal.ZERO, Category.B), 20),
new OrderPosition(new Product("Chleb", new BigDecimal("15.5"),BigDecimal.ZERO, Category.C), 10),
new OrderPosition(new Product("Nabial", new BigDecimal("8"),BigDecimal.ZERO, Category.D), 2),
new OrderPosition(new Product("Kielbasa", new BigDecimal("15"),BigDecimal.ZERO, Category.A), 10),
new OrderPosition(new Product("Jajko", new BigDecimal("5"),BigDecimal.ZERO, Category.B), 5)
);
Optional<BigDecimal> op = orderPositions
.stream()
.filter(orderPosition -> orderPosition.getProduct().getCategory().equals(Category.A))
.reduce((x,y) -> x.add.y);
提前致谢!!
【问题讨论】: