JDK 1.8-Stream中常用的API

本文详细介绍了JDK 1.8中Stream API的特性、缺点及运行机制,包括如何创建Stream、常用的中间操作如filter、distinct、sorted等,以及终止操作、查找和匹配、规约reduce、Collectors收集器的使用。此外,还讨论了Stream的并行流转换及其优势。
摘要由CSDN通过智能技术生成

JDK 1.8-Stream中常用的API

1. Stream

Stream是一组用来处理数组,集合的API

1.1特性

  1. 不是数据结构,没有内部存储
  2. 不支持索引访问
  3. 延时计算
  4. 支持并行
  5. 很容易生成数据或集合
  6. 支持过滤,查找,转换,汇总,聚合等操作

1.2缺点

  1. 若不用并行计算,很多时候计算速度没有比传统的 for 循环快。
  2. 不容易使用debug模式调试。
  3. 在 lambda 语句中直接强制类型转换不方便。
  4. 不可以在foreach中修改foreach外面的值。

1.3 运行机制

Stream分为源source,中间操作,终止操作。一个流只会有一个终止操作,Stream只有遇到终止操作,它的源才会开始执行遍历操作。一个流只能使用一次。

1.3 Stream的创建

1.通过数组
String[] str={“a”,”b”,”c”}
Stream str1=Stream.of(str);
2.通过集合
List list=Arrays.asList(“a”,”b”,”c”);
Stream stream=list.stream();
3.通过iterate
Stream iterate=Stream.iterate(1,X->x+1);
Iterate.forEach(x->System.out.println(x));

2. Stream常用的API

2.1中间操作

2.1.1 filter过滤

Filter会根据条件截取流中符合条件的数据。
List integerList=Arrays.asList(1,2,3,4,5,6);
List collect=integerList.stream().filter(i->i%2==0).collect(Collectors.toList());

2.1.2 distinct去重

返回一个元素各异的流(根据流所生成元素的hashCode和Equals方法实现)
List numbers=Arrays.asList(1,1,2,2,3,4);
List collect=numbers.stream().distinct().collect(Collectors.toList());

2.1.3 sorted 排序

对流中的数据进行排序,可以用自然序或Comparator接口定义排序的规则,Comparator可以用lanbada表达式来初始化
List integers=Arrays.asList(1,9,8,3,4);
//排序默认为顺序
List sorted=integers.stream().sorted().collect(Collectors.toList());
//逆序
List reverseSorted
=integers.stream().sorted(Comparato

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值