Java8 - 对流(数据)进行自定义分组:groupingBy收集器

groupingBy收集器

在JDK8中,可以对流进行方便的自定义分组,就像 SQL 语句中的 groupBy 一样,在JDK8中对应的分组函数是 Collectors 类的 groupingBy 方法。这种特性很有用:把数据拆分成不同的组,可以使处理数据更加灵活方便,在某些情况下例如按需处理、分块处理时更高效。

 

 

例如:有一组人名,需要根据首字母(姓氏)进行分组,则可以通过 groupingBy 分组函数方便地实现。

下面是代码例子:

// 创建一个包含人名称的流
Stream<String> stream = Stream.of("Alen", "Hebe", "Zebe", "Helen", "Alex");
// 通过人名称的首字母进行分组
final Map<Character, List<String>> map = stream.collect(Collectors.groupingBy(s -> s.charAt(0)));
// 输出分组结果
map.forEach((letter, groups) -> {
    System.out.println("以字母 " + letter + " 开头的名字如下:");
    groups.forEach(name -> System.out.println("\t" + name));
});

程序输出结果如下:

以字母 A 开头的名字如下:
    Alen
    Alex
以字母 H 开头的名字如下:
    Hebe
    Helen
以字母 Z 开头的名字如下:
    Zebe


本文原文地址:https://blog.youkuaiyun.com/zebe1989/article/details/83053999

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值