Java8新特性-流式操作

简介: 更像是一个迭代器,有序的获取到数据源中的每一个数据,并且可以对这些数据进行一些操作

在Java8中提供了新特性—流式操作,通过流式操作可以帮助我们对数据更快速的进行一些过滤、排序、去重、最大、最小等等操作并且内置了并行流将流划分成多个线程进行并行执行,提供更高效、快速的执行能力。接下来我们一起看看Java8为我们新增了哪些便捷呢?


什么是集合的流式操作?


流式操作:不是一个数据结构,不负责任何的数据存储


更像是一个迭代器,有序的获取到数据源中的每一个数据,并且可以对这些数据进行一些操作


流失操作的每一个方法,返回值都是返回的流本身


翻译:可以把流比作一个管道,管道中有很多过滤网


对集合做流式操作的三个步骤?


获取数据源:集合、数组


对数据进行处理的过程:过滤、排序、映射……(中间操作)


对流中数据的整合:转成集合、数量(最终操作)


b5e1535ab24743cda74ce82d4de128a1.png


映射


方法


  • flatMap:相同元素合并或拆分h1
  • map:将源数据转换成需要的数据类型或者进行指定的操作
  • toMap:转换成需要的map集合


实践说明


flatMap:相同元素合并或拆分h1


map:将源数据转换成需要的数据类型或者进行指定的操作


要求输出内容:h,e,l,l,o,w,o,r,l,d


public static void main(String[] args) {
        String[] array = {"hello", "world"};
        System.out.println(Arrays.stream(array).map(ele -> ele.split("")).flatMap(Arrays::stream).collect(Collectors.toList()));
}


参考博客:


flatMap():Java8 FlatMap的使用_java flatmap_杨幂等的博客-CSDN博客


Map():这么简单,还不会使用java8 stream流的map()方法吗?_stream流的map方法_欧子有话说的博客-CSDN博客


toMap:转换成需要的map集合


public static void main(String[] args) {
       Stream<Person> stream = Data.getData().stream();
        Map<String, Integer> maps = stream.collect(Collectors.toMap(Person::getName, Person::getScore));
        System.out.println(maps);
}


并行流


什么是并行流?


把流分成多个块,并行操作


为什么需要并行流?


集合做重复的操作,如果使用串行执行会相当耗时,因此一般会采用多线程来加快, Java8的提供了并发执行能力


方法


  • parallel():并行流


  • findAny:最先抢到cpu时间片的线程它所处理的数据段中的第一个数据,串行流结果等同于findFirst


  • findFirst:流中的第一个元素(指集合中的第一个),并行流或串行流结果一致


实战说明


parallel():并行流


import com.example.Data;
import java.util.Arrays;
import java.util.stream.Collectors;
import java.util.stream.LongStream;
/**
 * @BelongsProject: StreamOperate
 * @BelongsPackage: PACKAGE_NAME
 * @CreateTime: 2023-05-01  21:12
 * @Description: TODO
 * @Version: 1.0
 */
public class ParalleStream {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        LongStream.rangeClosed(0L, 50000000000L).parallel().reduce(Long::sum);
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }
}


参考博客:Java 8 并行流(Parallel Stream) 介绍 - 简书


findAny和findFirst的区别是什么?


findAny:最先抢到cpu时间片的线程它所处理的数据段中的第一个数据,串行流结果等同于findFirst


findFirst:流中的第一个元素(指集合中的第一个),并行流或串行流结果一致


对于并行流中,findAny比findFirst效率更高


import com.example.Data;
import java.util.Arrays;
import java.util.stream.Collectors;
import java.util.stream.LongStream;
/**
 * @BelongsProject: StreamOperate
 * @BelongsPackage: PACKAGE_NAME
 * @CreateTime: 2023-05-01  21:12
 * @Description: TODO
 * @Version: 1.0
 */
public class ParalleStream {
    public static void main(String[] args) {
        System.out.println(Data.getData().parallelStream().findFirst());
        System.out.println(Data.getData().stream().findFirst());
        System.out.println(Data.getData().stream().findAny());
        System.out.println(Data.getData().parallelStream().findAny());
    }
}


相关博客


Java8流式操作——中间操作


Java8流式操作——最终操作


Java流式操作——Collectors工具类


如果有想要交流的内容欢迎在评论区进行留言,如果这篇文档受到了您的喜欢那就留下你点赞+收藏+评论脚印支持一下博主~

相关文章
|
2月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
Java API 开发者
99 0
|
4月前
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
219 1
|
4月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
536 1
|
4月前
|
缓存 安全 Java
Java 并发新特性实战教程之核心特性详解与项目实战
本教程深入解析Java 8至Java 19并发编程新特性,涵盖CompletableFuture异步编程、StampedLock读写锁、Flow API响应式流、VarHandle内存访问及结构化并发等核心技术。结合电商订单处理、缓存系统、实时数据流、高性能计数器与用户资料聚合等实战案例,帮助开发者高效构建高并发、低延迟、易维护的Java应用。适合中高级Java开发者提升并发编程能力。
139 0
|
4月前
|
安全 Java API
Java 17 及以上版本核心特性在现代开发实践中的深度应用与高效实践方法 Java 开发实践
本项目以“学生成绩管理系统”为例,深入实践Java 17+核心特性与现代开发技术。采用Spring Boot 3.1、WebFlux、R2DBC等构建响应式应用,结合Record类、模式匹配、Stream优化等新特性提升代码质量。涵盖容器化部署(Docker)、自动化测试、性能优化及安全加固,全面展示Java最新技术在实际项目中的应用,助力开发者掌握现代化Java开发方法。
209 1
|
4月前
|
IDE Java API
Java 17 新特性与微服务开发的实操指南
本内容涵盖Java 11至Java 17最新特性实战,包括var关键字、字符串增强、模块化系统、Stream API、异步编程、密封类等,并提供图书管理系统实战项目,帮助开发者掌握现代Java开发技巧与工具。
267 0
|
4月前
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
151 2
下一篇
oss云网关配置