3

私はList<Map<String,Object>>

[ {key1: object1a, key2: object2a, key3: object3a}, 
  {key1: object1a, key2: object2a, key3: object3a}, 
  {key1: object1b, key2: object2b, key3: object3b}, 
  {key1: object1b, key2: object2b, key3: object3b}, 
  ...
]

を取得するために、3 番目の値でグループ化したいと思いますMap<String,List<Map<String,Object>>>

{ object3a: [ {key1: object1a, key2: object2a}, 
              {key1: object1a, key2: object2a}
            ],
  object3b: [ {key1: object1b, key2: object2b}, 
              {key1: object1b, key2: object2b}
            ],
  ...
}

Collectors.groupingBy?メソッドを使用して可能ですか、どのようにですか?

4

1 に答える 1

5

グループ化値を削除して要素を変更する必要があるため、要求は純粋なグループ化操作ではありません。

マップが変更可能な場合でも、それは可能であり、非常に簡単です。

List<Map<String,String>> list= …
Map<String,List<Map<String,String>>> map=
  list.stream().collect(Collectors.groupingBy(m->m.remove("key3")));

"key3"ここでは、質問の現在のリビジョンと一致するキーを使用していることに注意してください。元の質問に合わせるには、に置き換える必要があり"key3"ます"sample3"

于 2015-03-03T11:53:42.047 に答える