【问题标题】: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&lt;Animal&gt;,而是使用另一种类型,例如List&lt;Animal&gt;:

    Map<String, List<Animal>> collect = animals.stream()
            .collect(Collectors.groupingBy(Animal::getSpecies));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 2016-12-14
      相关资源
      最近更新 更多