Java 流 : multiple grouping

标签 java lambda java-stream

我可以按一个字段分组,但我想同时按两个字段分组

//persons grouped by gender
Map<String, Long> personsGroupedByGender = persons.stream().collect(Collectors.groupingBy(Person::getGender, Collectors.counting()));

//persons grouped by age
Map<Int, Long> personsGroupedByAge = persons.stream().collect(Collectors.groupingBy(Person::getAge, Collectors.counting()));

//persons grouped by gender and age 

    ???

最佳答案

您可以分组两次,结果将如您所愿,但包装略有不同。

persons.stream().collect(Collectors.groupingBy(Person::getGender,  
              Collectors.groupingBy(Person::getAge, Collectors.counting())));

关于Java 流 : multiple grouping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43901595/

相关文章:

list - 使用 foldr 在 haskell 中实现插入

Java 8 : change type of entries return Map

Java 8 : performance of Streams vs Collections

java - 如何使用 Java 8 流制作笛卡尔积?

java - 使用原始类型验证多个 instanceof 的最佳方法是什么(例如 : switch case)?

java - 了解 java 编译器源标志和目标标志

java - 我可以通过 Heroku 使用 DynamoDB 吗?

Java 8 方法引用未处理的异常

java - e.getActionCommand() 不起作用?

c# - 将 lambda 重构为事件方法