Java8 新方法之 Stream(一)

Java8中的steram仅仅代表着数据流,与InputStreamOutPutStream是完全不同的概念。这里的stream是对集合(collection)功能的增强,更专注于对集合对象的各种便利、高效的聚合,大批量数据操作。


collec()函数

stream返回的元素拼成ArrayList参数为Collectros接口,提供极大的便利

 <R, A> R collect(Collector<? super T,A, R> collector);

解析:函数为泛型方法

参数为泛型约束,只能是某一类型的父类


         参数Colector接口

除了toList(),toSet(),toMap(),还有joing()拼接字符串,groupingby等方法

   

        Colector方法 groupingBy基本分组

使用:我们用groupingBy方法将人群按年龄分组

Map(Integer,List<Person>)personAge=people.stream().collect(collectros.groupingBy(Person::getAge));

Person::getAge为方法引用,返回某个属性的值。这里看起来横向C++的函数作用域呀。其实groupingBy()接受一个lambda表达式

collect(Collectors.groupingBy(p->p.getAge))

gruoppingBy有多种重载,其中一个是带有收集器的,将分组的数据按指定条件收集


      groupingBy 选择分组

使用:我们将分组的数据,只获取其中的名称

Map(Integer,List<string> nameofAge=people.stream().collect(groupingBy(Person::getAge,Mapping(Person::getName,toList())));
System.out.println("People grouped by age: " + nameOfPeopleByAge);

解析:两个参数:第一个是年龄,分组条件,第二个是收集期,mapping函数返回结果,mapping连个参数,分别是映射的属性和收集到的地方,如listset

输出的结果为

People grouped byage: {35=[Greg], 20=[John], 21=[Sara, Jane]}

小结:

通过查看源码我们发现groupingBy的参数为function<T,R>函数接口,该函数的操作是接收参数为T,返回R类型的操作,说白了就是一个func的泛型委托,参数为T,返回为T,和NET中的func是一个效果,很大程度上简化了代码书写度

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值