>source

메소드 returnspecificorger (아래 code)가 enum 클래스 인 경우이 메서드는 item.type= "옷을 포함하는 주문 만 반환해야합니다. 여기서 다른 클래스 마녀 가변 공개 유형 유형이있는 다른 클래스의 유형입니다. i 해시 맵에서 주문을 반환하려고하지만 Java는 기호를 해결할 수 없으므로 내 메소드를 변경해야합니까?

public class Order extends User{
    public long id;
    public LocalDate dateTime;
    public User user;
    public List<Item> items;
    public void setId(long id) {
        this.id= id;
    }
    public void setDateTime(LocalDate dateTime) {
        this.dateTime= dateTime;
    }
    public void setUser(User user) {
        this.user= user;
    }
    public void setItems(List<Item> items) {
        this.items= items;
    }
    public long getId() {
        return id;
    }
    public LocalDate getDateTime() {
        return dateTime;
    }
    public User getUser() {
        return user;
    }
    public List<Item> getItems() {
        return items;
    }
    public HashMap<Long, Order>  createOrder() {
    Order myFirstOrder= new Order();
        myFirstOrder.setId(1);
        myFirstOrder.setDateTime(LocalDate.now());
        myFirstOrder.setUser(user);
        myFirstOrder.setItems(items);
    Order mySecondOrder= new Order();
        mySecondOrder.setId(2);
        mySecondOrder.setDateTime(LocalDate.now());
        mySecondOrder.setUser(user);
        mySecondOrder.setItems(item2);
    //hash map of orders
    HashMap<Long, Order> orders= new HashMap<>();
        orders.put(myFirstOrder.getId(), myFirstOrder);
        orders.put(mySecondOrder.getId(), mySecondOrder);
        return orders;
}
    //method that will return only Orders containing item.type= "Clothes"
    public static Map<Long, Order> returnSpecificOrder(Type type) {
        return orders.entrySet()
                .stream()
                .filter(o -> o.getValue().getItems().stream().anyMatch(item -> item.getType()== Type.clothes))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
    }
        @Test
        @DisplayName("Test that verify if Order have item type -clothes -Positive ")
        public void verifyOrderWithClothesType() {
            HashMap<Long, Order> orders= createOrder();
            Map<Long, Order> specificOrder= returnSpecificOrder(orders);
            if (specificOrder.isEmpty()) {
                System.out.println("Test failed -Didn't find orders with item type clothes");
            } else {
                for (Map.Entry<Long, Order> order : specificOrder.entrySet()) {
                    Item item= order.getValue().getItems().get(Math.toIntExact(order.getKey() -1));
                    assertEquals(format("Order [%s] has not item type 'clothes'", order.getKey()),
                            Type.clothes,
                            item.getType());
                }
            }

귀하의 산문과 귀하의 code는 둘 다 복잡합니다. 귀하의 질문에 집중하기 위해 무의미한 것을 자르면서 제안합니다.

Basil Bourque2021-06-10 16:49:06

나는 무의미한 부분을 자르고, 이제는 덜 덜어 져야한다.

hisimoto2021-06-10 16:49:06

1) 오류 메시지는 어떤 기호가 문제인지를 나타내야합니다. 2) 그것은 또한 그것이 문제가 있는지, 즉 문제가 있는지, (3) 시작하려면 마지막 방법으로 주문을 찾을 수 없습니다)

user157933162021-06-10 16:49:06
  • 이전 node.js : 클라이언트가 대답 한 이메일을 어떻게 알 수 있습니까?
  • 다음 Zebra Android SDK 프린터 안드로이드 11로 인쇄하지 않음 : 블루투스 표시등이 깜박이지만 인쇄가 아닙니다.