グループにオブジェクト値のリストを変換します

StonecoldIM:

私は、次のコードを持っています

OrderCriteria o1 = new OrderCriteria(1, 1, 101, 201);
OrderCriteria o2 = new OrderCriteria(1, 1, 102, 202);
OrderCriteria o4 = new OrderCriteria(1, 1, 102, 201);
OrderCriteria o5 = new OrderCriteria(2, 2, 501, 601);
OrderCriteria o6 = new OrderCriteria(2, 2, 501, 602);
OrderCriteria o7 = new OrderCriteria(2, 2, 502, 601);
OrderCriteria o8 = new OrderCriteria(2, 2, 502, 602);
OrderCriteria o9 = new OrderCriteria(2, 2, 503, 603);

どこOrderCriteriaルックスは、以下のように:

public class OrderCriteria {
    private final long orderId;
    private final long orderCatalogId;
    private final long procedureId;
    private final long diagnosisId;

    public OrderCriteria(long orderId, long orderCatalogId, long procedureId, long diagnosisId) {
        this.orderId = orderId;
        this.orderCatalogId = orderCatalogId;
        this.procedureId = procedureId;
        this.diagnosisId = diagnosisId;
    }

    // Getters
}

私が欲しいの手続きと注文IDでグループ化された診断のリストのリストを取得することです。それは返す必要がありそう。

{1, {101, 102}, {201, 202}}
{2, {501, 502, 503}, {601, 602, 603}}

これはI等、IDが1の順序は、手順のIDS 101、102及び診断IDS 201を有している手段202のGoogleグアバテーブルを用いて試みたが、任意の有効な解決策を考え出すことができませんでした。

shmosel:

まず、グループ化されたデータを保持するために、新たな構造が必要になります:

class OrderCriteriaGroup {
    final Set<Long> procedures = new HashSet<>();
    final Set<Long> diagnoses = new HashSet<>();

    void add(OrderCriteria o) {
        procedures.add(o.getProcedureId());
        diagnoses.add(o.getDiagnosisId());
    }

    OrderCriteriaGroup merge(OrderCriteriaGroup g) {
        procedures.addAll(g.procedures);
        diagnoses.addAll(g.diagnoses);
        return this;
    }
}

add()そしてmerge()私たちはそうのように、データをストリーミングし、収集に役立つ便利なメソッドです。

Map<Long, OrderCriteriaGroup> grouped = criteriaList.stream()
        .collect(Collectors.groupingBy(OrderCriteria::getOrderId,
                Collector.of(
                        OrderCriteriaGroup::new,
                        OrderCriteriaGroup::add,
                        OrderCriteriaGroup::merge)));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=221283&siteId=1