どのようにアクセスするには、ストリーム内のマップエントリ項目を入れ子になりましたか?

マジッド:

私は、ネストされた持っているMap。このようなオブジェクトを:

Map<String,Map<Integer,Double>> items = getMap();

私はクラスが名前の持つMyClassそのコンストラクタがこのようであること:

public MyClass(String city, int month, double average){}

今、私は変換するitemsにはMyClass、このようリスト:

List<MyClass> myList = items.entrySet().stream()
                                       .map(i-> new MyClass(i.getKey(), ?, ?))
                                       .collect(Collectors.toList()); 

しかし、私が代わりに使用すべきかわからない?アクセスを入れ子にIntegerしてDoubleから値をMapオブジェクト?

user7:

ネストされたマップを持っているので、あなたも、内側マップエントリを処理しなければなりません。(これは、市内には多くの月平均のペアがあると仮定しています)

List<MyClass> myList = items.entrySet()
    .stream()
    .flatMap(entry -> entry.getValue().entrySet()
        .stream()
        .map(innerEntry -> new MyClass(entry.getKey(), innerEntry.getKey(), innerEntry.getValue()))
    )
    .collect(Collectors.toList());

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=184209&siteId=1
おすすめ