【问题标题】:Splitting a Collection into multipe collections grouped in a map using streams [duplicate]使用流将集合拆分为在地图中分组的多个集合[重复]
【发布时间】:2020-04-06 17:49:05
【问题描述】:
假设我有一堂课
public class Animal {
String name;
String species;
}
我想知道是否有一种使用流将Collection<Animal> 拆分为Map<String, Collection<Animal>> 的好方法,按物种对不同动物进行分组。
我可以用旧方法来做,但我想那里可以使用流。我的主要问题是我不知道如何“随时随地创建列表”。
【问题讨论】:
标签:
java
java-stream
grouping
【解决方案1】:
您是否正在寻找这样的东西:
Map<String, Collection<Animal>> collect = animals.stream()
.collect(Collectors.groupingBy(Animal::getSpecies,
Collectors.toCollection(ArrayList::new)));
但我建议不要使用预期的Collection<Animal>,而是使用另一种类型,例如List<Animal>:
Map<String, List<Animal>> collect = animals.stream()
.collect(Collectors.groupingBy(Animal::getSpecies));