Collectors.groupingBy()多级分组
时间: 2023-10-12 08:06:20 浏览: 176
深入探索Java 8的`Collectors.groupingBy()`:分组的艺术
在Java中,Collectors.groupingBy()方法允许我们按照给定的分类函数对元素进行分组。可以使用多级分组来进一步细分数据。多级分组意味着在分组的基础上再次对结果进行分组。
下面是一个示例,展示了如何使用Collectors.groupingBy()进行多级分组:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class GroupingByExample {
public static void main(String[] args) {
List<String> countries = Arrays.asList("China", "India", "USA", "Canada", "Australia", "Germany", "France");
Map<Character, Map<String, List<String>>> result = countries.stream()
.collect(Collectors.groupingBy(
country -> country.charAt(0),
Collectors.groupingBy(
country -> country.length() > 5 ? "Long" : "Short"
)
));
System.out.println(result);
}
}
```
以上代码将字符串列表按首字母进行分组,并根据字符串长度将其进一步分为"Long"和"Short"两个组。输出结果如下:
```
{A={Australia=[Australia]}, C={China=[China], Canada=[Canada]}, F={France=[France]}, G={Germany=[Germany]}, U={USA=[USA]}, I={India=[India}}
```
可以看到,结果是一个嵌套的Map结构,其中外层的Key是首字母,内层的Key是字符串长度的分类,值是符合条件的字符串列表。
希望这个例子能帮助你理解Collectors.groupingBy()方法在多级分组中的应用。如果还有其他问题,请随时提问!
阅读全文