【问题标题】:How to get Products from order list?如何从订单列表中获取产品?
【发布时间】:2022-06-16 18:54:16
【问题描述】:

我正在使用 java 流 api。在代码中,我有两个类OrderProduct。多个产品与单个订单相关联。它们之间的关系在组成上是OnetoMany。当我试图获取所有具有“婴儿”类别的产品并打印订单列表时。我完全重复订单,但在获取产品时,获取[Product@123a439b, Product@5e265ba4, Product@156643d4, Product@7de26db8]。我想这个打印内存地址但是我想打印产品列表。

下面是我的代码:

class Order {
    private Long id;
    private LocalDate orderDate;
    private LocalDate deliveryDate;
    private String status;
    
    Set<Product> products;

    // constructor, getter and setter
}

class Product {
    private Long id;
    private String name;
    private String category;
    private Double price;

    // constructor, getter and setter
}

public class Association {
    public static void main(String[] args) {
        Set<Product> book = new HashSet<>();
        book.add(new Product(1001L, "Zero To One", "Books", 245.00));
        book.add(new Product(1003L, "Life Is What You Make It", "Books", 98.00));

        Set<Product> appliance = new HashSet<>();
        appliance.add(new Product(1002L, "Better Photography", "Home Appliances", 100.00));

        Set<Product> baby = new HashSet<>();
        appliance.add(new Product(1006L, "Himalaya Baby Powder", "Baby", 120.00));
        appliance.add(new Product(1007L, "Himalaya Baby Shampoo", "Baby", 208.00));

        Set<Order> order = new HashSet<>();
        order.add(new Order(1100L, LocalDate.parse("2022-02-08"), LocalDate.parse("2022-02-13"), "delivered", book));
        order.add(new Order(1100L, LocalDate.parse("2022-03-10"), LocalDate.parse("2022-03-15"), "pending", appliance));
        order.add(new Order(1100L, LocalDate.parse("2022-03-10"), LocalDate.parse("2022-03-15"), "pending", baby));

        order.stream().filter(o -> o.getProducts().stream().anyMatch(p -> p.getCategory().equals("Baby")))
                .forEach(p -> System.out.println(p.getId() + " " + p.getOrderDate() + " " + p.getDeliveryDate() + " " + p.getStatus() + " " + p.getProducts()));
    }
}

这是我的输出:

1100 2022-03-10 2022-03-15 pending [Product@123a439b, Product@5e265ba4, Product@156643d4, Product@7de26db8]

【问题讨论】:

  • 产品应该是什么样的?一旦你决定了,你就必须在 Product 类中实现一个 toString() 方法。

标签: java java-8 java-stream composition


猜你喜欢
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
  • 2020-08-22
  • 1970-01-01
  • 2017-10-18
相关资源
最近更新 更多