Java8 Stream 流常用方法合集

Java8 Stream 流常用方法合集

Java 8 引入了一种新的抽象数据类型 Stream,它让数据的操作变得更加简单高效。Stream 可以是一组数据的集合、数组等等,它支持多方面的操作,比如过滤、映射、筛选、分组、去重、排序等等。下面将介绍 Java8 Stream 常用的方法。

创建流

  • 从集合创建流:可以将一个集合转换为流,并对流中的元素进行操作。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
  • 从数组创建流:可以将一个数组转换为流,并对流中的元素进行操作。
int[] arr = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(arr);
  • 常量流:可以使用 Stream 类中的静态方法来创建一个常量流。
Stream<String> stream = Stream.of("hello", "world");
  • 无限流:可以使用 Stream 类中的静态方法来创建一个无限流。
Stream<Integer> stream1 = Stream.iterate(0, n -> n + 2);
stream1.limit(5).forEach(System.out::println); // 输出: 0, 2, 4, 6, 8

Stream<Double> stream2 = Stream.generate(Math::random);
stream2.limit(5).forEach(System.out::println); // 输出: 五个 0~1 之间的随机小数

转换操作

  • map() 方法

map() 方法可以将一个流中的每个元素转换为另一个元素。例如,我们可以将一个流中的每个元素平方:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.map(i -> i * i).forEach(System.out::println);
// 输出: 1, 4, 9, 16, 25
  • flatMap() 方法

flatMap() 方法可以将一个流中的每个元素转换为另一个流。例如,我们可以将一个流中的每个元素拆分成字符串数组并且输出:

Stream<String> stream1 = Stream.of("hello", "world");
stream1.flatMap(s -> Arrays.stream(s.split(""))).forEach(System.out::println);
// 输出: h, e, l, l, o, w, o, r, l, d

过滤操作

  • filter() 方法

filter() 方法可以将一个流中的元素按照指定规则过滤掉一部分。例如,我们可以将一个流中的所有偶数过滤出来:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.filter(i -> i % 2 == 0).forEach(System.out::println);
// 输出: 2, 4
  • distinct() 方法

distinct() 方法可以将一个流中的重复元素去重并返回一个新的流。例如,我们可以将一个流中的重复元素去重:

Stream<String> stream1 = Stream.of("hello", "world", "hello");
stream1.distinct().forEach(System.out::println);
// 输出: hello, world

排序操作

sorted() 方法可以将一个流中的元素进行排序并返回一个新的流。例如,我们可以将一个流中的元素按照自然顺序排序:

List<Integer> list = Arrays.asList(4, 3, 6, 1, 5, 2);
Stream<Integer> stream = list.stream();
stream.sorted().forEach(System.out::println);
// 输出: 1, 2, 3, 4, 5, 6

统计操作

  • count() 方法

count() 方法可以返回一个流中元素的个数。例如,我们可以统计一个流中元素的个数:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
long count = stream.count();
System.out.println(count); // 输出: 5
  • reduce() 方法

reduce() 方法可以将一个流中的所有元素按照指定规则归约为一个元素,并返回一个 Optional 类型的结果。例如,我们可以将一个流中的元素求和:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
Optional<Integer> sum = stream.reduce((x, y) -> x + y);
System.out.println(sum.get()); // 输出: 15

以上就是 Java8 Stream 常用的一些方法,如果你想深入了解 Java8 Stream,可以参考 JDK8 中的官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java8 Stream 流常用方法合集 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Android之网络通信案例分析

    Android之网络通信案例分析 本文将为大家详细介绍如何在Android应用中实现网络通信,主要内容包括: Android的网络通信模块介绍; HttpUrlConnection工具类详细讲解和使用方法; okhttp工具类详细讲解和使用方法; Retrofit库详细讲解和使用方法; Volley库详细讲解和使用方法。 一、Android的网络通信模块介绍…

    Java 2023年5月23日
    00
  • JavaWeb文件上传下载功能示例解析

    JavaWeb文件上传下载功能示例解析 文件上传功能 基本原理 文件上传是将本地文件发送到服务器保存的过程。通过HTTP协议,客户端将文件数据发送到服务器端,服务器接收到数据后将其存储到指定的目录中。 在本例中,我们使用了Apache的文件上传组件commons-fileupload来实现文件上传功能。 实现步骤 引入相关依赖。 xml <depend…

    Java 2023年5月19日
    00
  • Java 如何实现AES加密

    下面是Java如何实现AES加密的完整攻略。 1. AES加密简介 AES加密是一种高级加密标准,是一种对称加密算法。其中对称加密意味着加密前后使用相同的秘钥。AES加密算法的特点是密钥长度可配置,目前支持4种密钥长度:128(默认)、192、256位。AES加密的原理是通过对明文进行分块加密,使用相同长度的秘钥对每个块进行加密,以实现数据的加密。 2. 实…

    Java 2023年5月19日
    00
  • java web实现用户权限管理

    Java Web 实现用户权限管理,主要的实现思路就是通过对用户进行访问控制、绑定角色、授权等操作,来达到实现用户权限控制的目的。整个流程主要包含以下几个步骤: 1.设计用户权限表2.设计用户角色与权限表3.设计角色表4.设计角色权限表5.整合权限验证 接下来详细讲解每个步骤的具体实现方法。 设计用户权限表 一个用户可能拥有不同的权限,所以需要在数据库中设计…

    Java 2023年6月15日
    00
  • AJAX 客户端响应速度提高分析

    AJAX 客户端响应速度提高分析 什么是 AJAX? AJAX(Asynchronous JavaScript and XML)即异步的 JavaScript 和 XML,是一种基于现有技术通过 JavaScript 进行的客户端与服务器的通信技术。AJAX 可以在不重新加载整个页面的情况下向服务器发送请求、接收数据并更新页面。 如何提高 AJAX 客户端响…

    Java 2023年6月15日
    00
  • Java excel数据导入mysql的实现示例详解

    Java excel数据导入mysql的实现示例详解 背景 在项目中,我们常常需要将Excel表格中的数据导入到MySQL数据库中,这是一种常用的数据导入方式。本文将介绍如何使用Java将Excel中的数据导入到MySQL数据库中,并提供两个示例供大家参考。 第一步:导入Excel相关的依赖 本示例中,我们使用Apache POI来操作Excel文件。在Ma…

    Java 2023年5月20日
    00
  • 一天吃透SpringMVC面试八股文

    说说你对 SpringMVC 的理解 SpringMVC是一种基于 Java 的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring框架的一个模块。 它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful编程风格的请求。 什么是MVC模式? MVC的全名是Model View Control…

    Java 2023年4月22日
    00
  • Spring Data JPA实现动态查询的两种方法

    下面我将详细讲解“Spring Data JPA实现动态查询的两种方法”的完整攻略。 一、介绍 Spring Data JPA是Spring家族中非常流行的项目之一,它使我们能够更方便地使用JPA进行持久层开发。除了基本的CRUD外,Spring Data JPA还提供了许多方便的查询方法。但是,有时候我们需要根据请求参数来动态构建查询条件,这就需要使用Sp…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部