Java8 Stream 流常用方法合集

yizhihongxing

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日

相关文章

  • java使用JNA(Java Native Access)调用dll的方法

    下面是使用JNA调用dll的方法攻略,分为如下几个步骤: 1. 准备工作 在使用JNA调用dll之前,需要确保以下几个条件: 安装Java开发环境 确定dll文件的存放位置,通常是在操作系统的system32目录下面 查看dll文件的API函数,并记录下来 2. 创建Java工程并导入JNA依赖 创建一个Java工程,并将JNA库添加到工程中的类路径中。 在…

    Java 2023年5月26日
    00
  • jsp文件绝对路径的设置方法

    设置jsp文件的绝对路径方法可以通过配置web.xml文件来实现。以下是具体的步骤: 在web.xml文件中添加servlet和servlet-mapping标签。 <servlet> <servlet-name>yourServletName</servlet-name> <jsp-file>/WEB-INF…

    Java 2023年6月15日
    00
  • SpringBoot四大神器之Actuator的使用小结

    Spring Boot四大神器之Actuator的使用小结 Spring Boot Actuator是Spring Boot的一个扩展模块,提供了一组用于监控和管理Spring Boot应用程序的端点。在本文中,我们将详细讲解Actuator的使用方法和常用端点。 添加依赖 首先,我们需要在Maven项目中添加Actuator的依赖关系。我们可以使用以下依赖…

    Java 2023年5月15日
    00
  • 基于springBoot配置文件properties和yml中数组的写法

    以下是基于springBoot配置文件properties和yml中数组的写法的完整攻略: 配置文件格式 在Spring Boot中,可以使用.properties或.yml格式的配置文件,其中.yml格式相较于.properties更为简洁直观。 .properties格式 .properties格式中数组的写法可以使用以下方式: my.array[0]=…

    Java 2023年5月23日
    00
  • Jsp+Servlet实现文件上传下载 文件上传(一)

    “JSP+Servlet实现文件上传下载”,基本上可以分为文件上传和文件下载两个部分。下面详细讲解一下文件上传部分的实现过程。 文件上传实现 1. 文件上传表单页面 首先需要在页面上提供上传文件的表单。代码如下: <form action="upload" method="post" enctype="…

    Java 2023年6月15日
    00
  • Java 数据库连接池Druid 的介绍

    下面就为您详细讲解Java数据库连接池Druid的介绍。 一、概述 Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP等DB池的优点,同时加入了日志监控功能,利用Druid能够大大提高数据库访问的性能,是目前使用比较广泛的数据库连接池之一。 二、特点 Druid具有以下几个特点: 性能优秀。Druid经过多种优化,比如使用简单的S…

    Java 2023年6月3日
    00
  • Springboot入门案例及部署项目的详细过程

    下面我将为你详细讲解“Spring Boot入门案例及部署项目的详细过程”。 Spring Boot入门案例 步骤1:创建Spring Boot项目 首先,在你的开发环境上安装好Java和Maven,并创建一个新的Maven工程。在工程中加入以下依赖: <dependency> <groupId>org.springframework…

    Java 2023年5月15日
    00
  • Java如何获取JSON中某个对象的值

    获取JSON中某个对象的值最常用的方式是通过Java的JSON库将JSON字符串转换成Java中的对象,然后通过对象属性的方式获取需要的值。下面是获取JSON中某个对象的值的完整攻略以及两条示例说明: 步骤一:导入依赖 首先需要导入相关的依赖,本文使用的是Gson库,可以在项目中添加以下依赖: <dependency> <groupId&g…

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