Stream

Stream

概念:可以支持顺序和并行对元素操作的元素的集合.
作用: 提供了一种操作大数据接口,让数据操作更容易更快
使用stream,我们能够对collection 的元素进行过滤,映射 ,排序,去重等许多操作.
中间方法: 返回值为Stream
终点方法:返回值不是Stream

如何使用Stream?

  1. 通过Stream接口的静态工厂方法
  2. 通过collection接口的默认方法(常用)

常见的中间方法
1.Filter(过滤)

List persons =new ArrayList<>();  //人的集合
//过滤18以上的人
Stream personsOver18 = persons.stream().filter(p -> p.getAge() > 18); 

2.Map(对元素进行操作)

//把person转成Adult
Stream map = persons.stream().filter(p -> p.getAge() > 18).map(person -> new Adult(person)); 

3.limit(截断)
对一个Stream进行截断操作,获取其前N个元素,如果原Stream中包含的元素个数小于N,那就获取其所有的元素

4.distinct(去重)

对于Stream中包含的元素进行去重操作(去重逻辑依赖元素的equals方法),新生成的Stream中没有重复的元素

终点方法

1.count (统计)
count是一个流的终点方法,可以使流的结果最终统计,返回int

int countOfAdult=persons.stream()
                       .filter(p -> p.getAge() > 18)
                       .map(person -> new Adult(person))
                       .count();

2.collect(收集流的结果)
collect方法也是一个流的终点方法,可收集最终的结果

List adultList= persons.stream()
                       .filter(p -> p.getAge() > 18)
                       .map(person -> new Adult(person));
                       .collect(Collectors.toList());

顺序流和并行流

//顺序流:
List <Person> people = list.getStream.collect(Collectors.toList());

//并行流:
List <Person> people = list.getStream.parallel().collect(Collectors.toList());

//可以看出,要使用并行流,只需要.parallel()即可

当使用顺序方式去遍历时,每个item读完后再读下一个item。

而使用并行去遍历时,数组会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值