Collectors.groupingBy对分组名称进行修改
时间: 2023-10-13 13:08:22 浏览: 149
修改hive表分区名称
可以使用`Collectors.groupingBy`的重载方法,它允许您提供一个`Function`来计算分组键,并提供一个`Collector`来对分组元素进行进一步操作。在这个`Collector`中,您可以使用`Collectors.mapping`来对分组元素进行转换和修改。
例如,假设您有一个`List<String>`,您想要按字符串长度进行分组,并将分组名称修改为“长度为x的字符串”,可以使用以下代码:
```
List<String> strings = Arrays.asList("apple", "banana", "cherry", "pear", "orange");
Map<String, List<String>> groups = strings.stream()
.collect(Collectors.groupingBy(
s -> "长度为" + s.length() + "的字符串",
Collectors.mapping(
s -> s.toUpperCase(), // 转换为大写
Collectors.toList()
)
));
System.out.println(groups);
```
输出:
```
{长度为5的字符串=[APPLE, PEAR], 长度为6的字符串=[BANANA, CHERRY, ORANGE]}
```
在上面的代码中,我们使用`Collectors.groupingBy`的重载方法来指定分组键和收集器。我们提供了一个`Function`,它将字符串转换为“长度为x的字符串”,并使用`Collectors.mapping`来将分组元素转换为大写字母。最终,我们得到了一个`Map`,其中键为分组名称,值为分组元素列表。
阅读全文