0

arraylist の 2 つのオブジェクトとorderListproductList1 つの String arraylistがありcustomerIdListます。
POJOをProductInfoorderList と productList にマップし、cuustomerId が一致する必要があります。
特定の ProdId の注文または製品リストがない場合は、標準エラーを追加して、ProductInfo エラーにマップする必要があります。

これが私がやっていることです...

public class ProductInfo {
    private List<ProductDetails> products;
    private List<Error> errors;
    private String customerId;
}

public class ProductDetails {
    private String customerId;
    private Order order;
    private Product product;
    private List<Error> errors;
}

サンプル結果...

{
    "productInfo": {
        "customer_id": "123",
        "product_details": [
        {
            "customer_id": "123",
            "order_details": null,
            "product_details": {
                "customer_id": "123"
                "product_id" : "2343"
                "product_name": "XYZ",
                "product_type": "PQR"
                ...
            },
            "errors": [
                "error_code":"6001",
                "error_desc":"Failure in getting Order information from Order Service"
            ]
        },
        {
            "order_details": {
                "customer_id":"123"
                "order_id": "3543454",
                "order_date":"2016-10-12",
                "order_status":"ordered"
            },
            "product_details": null,
            "errors": [
                "error_code":"6001",
                "error_desc":"Failure in getting Product information from Product Service"
            ]
        }
        ],
        "system_errors":[]  
    }
}   

ArrayList のループとマッピング

for(String customerId : customerIdList) {   
    for(Product product: productList) {
        for(SOrder ordr: orderList) {
            if(customerId.equals(product.getCustomerId()) && customerId.equals(Order.getCustomerId()) ) {
                ModelMapper mapper = new ModelMapper();
                Order order = mapper.map(ordr, Order.class));
                productDetails.setOrder(order);
                //mapping to ProductInfo
                productDetailsList.add(productDetails);
            }
        }
    }
}

これを行うためのより良い方法があるかどうかを知りたいです。また、 POJOModelMapperにマップSOrderするために使用しており、他の POJO が利用可能な効率的なモデルマッパーがあるかどうかを知りたいです。ありがとう。Order

4

1 に答える 1

0

キーとしてマップproductListを作成できますorderListcustomerId

Map<String, Product> productMap = productList.stream().collect(Collectors.toMap(p -> p.getCustomerId(), p -> p));
Map<String, Product> orderMap = orderList.stream().collect(Collectors.toMap(o -> o.getCustomerId(), o -> o));

次に、1回のループで、その顧客IDの製品と注文があるかどうかを確認できます

for(String customerId : customerIdList) {
  if (productMap.containsKey(customerId) && orderMap.containsKey(customerId)) {
    //do your mapping stuff here
  }
}
于 2016-10-12T19:26:40.773 に答える