Dog
クラスがあるとしましょう。
その中にはMap<String,String>
があり、値の1つはBreed
です。
public class Dog {
String id;
...
public Map<String,String>
}
Map
sのList
を取得したい:
HashMap<String, List<Dog>> // breed to a List<Dog>
繰り返しではなくStream
を使用したいと思います。
どうすればいいですか?
groupingBy
でできます。
入力がList<Dog>
、Map
クラス内のDog
メンバーはmap
と呼ばれ、Breedは「Breed」キー用に保存されます:
List<Dog> dogs = ...
HashMap<String, List<Dog>> map = dogs.stream()
.collect (Collectors.groupingBy(d -> d.map.get("Breed")));
上記のすばらしい答えは、関数型プログラミング表記法を使用することでさらに改善できます。
List<Dog> dogs = ...
HashMap<String, List<Dog>> map = dogs.stream()
.collect(Collectors.groupingBy(Dog::getBreed));