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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JDK1.8是Java开发工具包的一个版本,也叫Java SE 8。它包含了Java编译器、虚拟机、类库和相关工具等组成部分。相对于较老的版本,JDK1.8相对增加了许多新特性和改进,让Java编程更加灵活、高效和安全。 JDK1.8的新特性包括Lambda表达式、Stream API、接口默认方法、新的日期和时间API等等。Lambda表达式允许开发者以更简洁、易读的方式处理集合数据,提高开发效率。Stream API则提供了在集合上进行功能性编程的能力,能够以更简单、流畅的方式处理数据。接口默认方法则简化了接口的实现,减少了代码的重复。新的日期和时间API还解决了在较老版本日期时间的一些问题,提供了更好的日期和时间处理方式。 JDK1.8还包含了一些安全性改进,例如对于网络传输和数据加密的支持等等。开发者可以使用更安全的方式处理数据,防止数据泄漏和攻击等问题。 总的来说,JDK1.8提供了许多新特性和改进,方便了Java开发者进行开发,并且增强了Java应用程序的灵活性、高效性和安全性。 ### 回答2: JDK 1.8是Java Development Kit的一个版本,是Java语言的一个开发工具包。它也被称为Java SE 8。 JDK 1.8相对于之前的版本,有很多重要的改进和新增功能,例如: 1. Lambda表达式:Lambda表达式是一个匿名函数,可以使得Java代码更加简洁易懂。使用Lambda表达式可以使得代码更加模块化,可以有效地减少重复代码。 2. Stream APIStream API是一组新功能,可以帮助我们更方便地处理集合和数组等数据结构。Stream API提供了丰富的方法,可以让我们直接对数据进行转换、筛选、排序等操作。 3. 新的时间日期APIJDK 1.8引入了新的时间日期API,为Java处理时间和日期问题提供了更好的支持。新的时间日期API提供了更加清晰和易用的API,可以有效地避免旧的Date和Calendar类的一些问题。 4. 接口的默认方法:在JDK 1.8,我们可以为接口添加默认的方法实现。这使得接口能够包含一些通用的方法实现,从而让使用接口的代码更加简单。 总之,JDK 1.8为Java开发者提供了更多的工具和技术,使得Java程序员可以更快速、更方便地进行开发。 ### 回答3: JDK1.8是Java Development Kit的简称,是Java语言的一种开发工具集。该版本于2014年发布,为Java 8版本,带来了许多新的特性和改进,如Lambda表达式、Stream API、方法引用、默认与静态方法接口、Date/Time API等。这些新特性大大提高了Java语言的效率和易用性,同时也激发了Java开发者的创造力与潜力,为Java开发带来了更多的可能性。JDK 1.8版本的发布也为Java应用程序和云计算带来了更大的优势,加强了Java在大数据分析、互联网应用、移动应用、嵌入式系统等领域的发展。总的来说,JDK 1.8版本是Java历史上的一个重要里程碑,在为Java开发者提供更多便捷和全面的工具之余,也为Java语言本身注入了更多的活力和生机。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值