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日

相关文章

  • java web实现简单登录注册功能全过程(eclipse,mysql)

    接下来我详细讲解如何使用Java Web实现简单的登录注册功能全过程,以下是步骤: 步骤一:配置开发环境 在开始项目之前,我们需要搭建好相应的开发环境,主要包括Java SE、Eclipse IDE、MySQL等工具和环境的安装和配置工作。 步骤二:创建Maven Web项目 在Eclipse IDE中创建一个Maven Web项目,建议使用Spring框架…

    Java 2023年6月16日
    00
  • Mybatis中 SQL语句复用

    Mybatis作为一款主流的ORM框架,可以有效地简化数据库操作。SQL语句的编写是Mybatis中的重要环节,而SQL语句复用则是其中重要的一块。本文将为您详细讲解Mybatis中SQL语句复用的完整攻略。 1. 基本概念 Mybatis支持多种方式实现SQL语句复用,其中最常用的方式是使用组合SQL。组合SQL即通过组合多个SQL语句实现复杂查询的效果。…

    Java 2023年5月20日
    00
  • SpringBoot整合Shiro的方法详解

    在Spring Boot中,Shiro是一个非常流行的安全框架,它可以帮助开发者轻松地实现身份验证、授权和加密等功能。在本攻略中,我们将详细介绍如何使用Shiro,并提供两个示例来说明其用法。 以下是两个示例,介绍如何使用Shiro: 示例一:使用注解方式 注解方式是Shiro中一种非常常用的方式,它可以帮助开发者快速地实现身份验证和授权。以下是一个示例,介…

    Java 2023年5月15日
    00
  • java中的文件操作总结(干货)

    Java中的文件操作总结(干货) Java中的文件操作常用于读写文件、创建文件夹、删除文件等操作,本篇将对Java中文件操作的常用技巧进行详细介绍。 1. 创建文件 Java中使用File类来创建文件,可以通过以下代码实现: // 创建文件对象 File file = new File("test.txt"); try { // 创建新的…

    Java 2023年5月20日
    00
  • 数据库中经常用到的操作和管理数据库的语句总结

    下面是数据库中经常用到的操作和管理数据库的语句总结的攻略。 数据库的操作 创建数据库 创建数据库的语句如下: CREATE DATABASE db_name; 其中,db_name 为数据库的名称。在执行此命令时,数据库的名称必须是唯一的。 删除数据库 删除数据库的语句如下: DROP DATABASE db_name; 其中,db_name 为要删除的数据…

    Java 2023年6月15日
    00
  • jsp使用cookie存储中文示例分享

    使用Cookie存储中文字符是Java Web开发常见的一个问题,本攻略主要介绍使用JSP存储中文字符到Cookie中的方法。具体操作如下: 1. 添加Cookie 使用JSP的Cookie类的setValue()函数,可以在Cookie中存储中文字符。示例代码如下: <% //新建一个中文Cookie Cookie cookie = new Cook…

    Java 2023年6月15日
    00
  • Java transient 关键字是干啥的

    当Java中的对象被序列化时,它们的所有属性(包括私有属性)都将被保存。在某些情况下,某些属性可能不想被序列化。在这种情况下,使用Java中的transient关键字进行标记,表示该属性不应该被序列化,并且不存储在返回的字节数组中。 在Java中,transient是一个关键字,用于标记类成员变量,通常用于序列化和反序列化。 Markdown 格式 在Mar…

    Java 2023年5月20日
    00
  • Java编程实现swing圆形按钮实例代码

    关于“Java编程实现swing圆形按钮实例代码”的攻略,以下是一些实现步骤: 1. 创建一个新的Java项目 首先,在你的Java开发环境中,创建一个新的Java项目。 2. 导入Swing库 在Java项目中,导入Swing库,其中包括“javax.swing.*”等相关类。 3. 创建一个圆形按钮 在Java源文件中,创建一个圆形按钮。你可以使用Jav…

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