マップにストリーム内のリストへの追加

jeff2405:

私は場所のIDに接続キーを使用して、マップに複数の不要なWeb要求を統合しようとしていて、値がその場所における製品のリストであること。

アイデアは、それにマッピングされた必要な製品のリストで、場所ごとに単一の要求を作成することによって、私のフラスコサーバへのリクエストの量を減少させることです。

私は、Java 8のストリーミング機能を使用して、同様の問題に直面している他の人を見つけることを試みたが、私は、マップ内のリストに追加しようとしている人を見つけることができません。

例;

public class Product {
    public Integer productNumber();
    public Integer locationNumber();
}

List<Product> products = ... (imagine many products in this list)

Map<Integer, List<Integer>> results = products.stream()
    .collect(Collectors.toMap(p -> p.locationNumber, p -> Arrays.asList(p.productNumber));

また、第2のpパラメータは、ストリーム内の現在の製品にアクセスすることはできません。

位置番号は、既存のリストと一致したときに、私はリストに追加することができればこのため、私はテストすることができませんでした。私はその不変を信じているように私は、)は、Arrays.asListを(使用することができます信じていません。

終わりに、マップは、場所ごとに、リスト内の多くの製品番号を持っている必要があります。それは、マップ内の既存のリストに整数を追加することは可能ですか?

ラビンドラRanwala:

あなたは、それがとても好き行うことができます

Map<Integer, List<Integer>> res = products.stream()
    .collect(Collectors.groupingBy(Product::locationNumber,
        Collectors.mapping(Product::productNumber, Collectors.toList())));

おすすめ

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