Java Stream API 操作完全攻略:让你的代码更加出色 (四)

简介: Java Stream 是一种强大的数据处理工具,可以帮助开发人员快速高效地处理和转换数据流。使用 Stream 操作可以大大简化代码,使其更具可读性和可维护性,从而提高开发效率。

theme: hydrogen

前言

  Java Stream 是一种强大的数据处理工具,可以帮助开发人员快速高效地处理和转换数据流。使用 Stream 操作可以大大简化代码,使其更具可读性和可维护性,从而提高开发效率。本文将为您介绍 Java Stream 操作的所有方面,包括 range、range、iterate、generate 等操作,让你的代码行云流水,更加优雅。

  1. range():生成一个包含指定范围内所有整数的 Stream。
  2. rangeClosed():生成一个包含指定范围内所有整数(包括端点)的 Stream。
  3. iterate():根据指定的初始值和 UnaryOperator 生成一个无限长度的 Stream。
  4. generate():根据指定的 Supplier 生成一个无限长度的 Stream。
  5. takeWhile():返回满足指定条件的元素,直到遇到第一个不满足条件的元素。
  6. dropWhile():返回不满足指定条件的元素,直到遇到第一个满足条件的元素。
  7. peek():对每个元素执行指定的操作,但并不消费元素。
  8. boxed():将 Stream 中的基本类型元素装箱成对应的包装类型。
  9. parallel():返回一个并行的 Stream。
  10. sequential():返回一个顺序的 Stream。

示例

1. 使用 range():生成一个包含指定范围内所有整数的 Stream。

代码示例:

import java.util.stream.IntStream;

public class RangeExample {
   
   
    public static void main(String[] args) {
   
   
        IntStream.range(1, 6)
                 .forEach(System.out::println);
    }
}

输出结果:

1
2
3
4
5

2. 使用 rangeClosed():生成一个包含指定范围内所有整数(包括端点)的 Stream。

代码示例:

import java.util.stream.IntStream;

public class RangeClosedExample {
   
   
    public static void main(String[] args) {
   
   
        IntStream.rangeClosed(1, 5)
                 .forEach(System.out::println);
    }
}

输出结果:

1
2
3
4
5

3. 使用 iterate():根据指定的初始值和 UnaryOperator 生成一个无限长度的 Stream。

代码示例:

import java.util.stream.Stream;

public class IterateExample {
   
   
    public static void main(String[] args) {
   
   
        Stream.iterate(2, n -> n * 2)
              .limit(5)
              .forEach(System.out::println);
    }
}

输出结果:

2
4
8
16
32

4. 使用 generate():根据指定的 Supplier 生成一个无限长度的 Stream。

代码示例:

import java.util.Random;
import java.util.stream.Stream;

public class GenerateExample {
   
   
    public static void main(String[] args) {
   
   
        Stream.generate(() -> new Random().nextInt(100))
              .limit(5)
              .forEach(System.out::println);
    }
}

输出结果:

64
77
41
21
73

5. 使用 takeWhile():返回满足指定条件的元素,直到遇到第一个不满足条件的元素。

代码示例:

import java.util.stream.Stream;

public class TakeWhileExample {
   
   
    public static void main(String[] args) {
   
   
        Stream.of("apple", "banana", "orange", "pear")
              .takeWhile(s -> s.startsWith("a"))
              .forEach(System.out::println);
    }
}

输出结果:

apple

6. 使用 dropWhile():返回不满足指定条件的元素,直到遇到第一个满足条件的元素。

代码示例:

import java.util.stream.Stream;

public class DropWhileExample {
   
   
    public static void main(String[] args) {
   
   
        Stream.of("apple", "banana", "orange", "pear")
              .dropWhile(s -> s.startsWith("a"))
              .forEach(System.out::println);
    }
}

输出结果:

banana
orange
pear

7. 使用 peek():对每个元素执行指定的操作,但并不消费元素。

代码示例:

import java.util.stream.Stream;

public class PeekExample {
   
   
    public static void main(String[] args) {
   
   
        Stream.of("apple", "banana", "orange", "pear")
              .peek(System.out::println)
              .count();
    }
}

输出结果:

apple
banana
orange
pear

8. 使用 boxed():将 Stream 中的基本类型元素装箱成对应的包装类型。

代码示例:

import java.util.stream.IntStream;

public class BoxedExample {
   
   
    public static void main(String[] args) {
   
   
        IntStream.range(1, 6)
                 .boxed()
                 .forEach(System.out::println);
    }
}

输出结果:

1
2
3
4
5

9. 使用 parallel():返回一个并行的 Stream。

代码示例:

import java.util.stream.Stream;

public class ParallelExample {
   
   
    public static void main(String[] args) {
   
   
        Stream.of("apple", "banana", "orange", "pear")
              .parallel()
              .forEach(System.out::println);
    }
}

输出结果:

pear
banana
apple
orange

10. 使用 sequential():返回一个顺序的 Stream。

代码示例:

import java.util.stream.Stream;

public class SequentialExample {
   
   
    public static void main(String[] args) {
   
   
        Stream.of("apple", "banana", "orange", "pear")
              .parallel()
              .sequential()
              .forEach(System.out::println);
    }
}

输出结果:

apple
banana
orange
pear

结尾

  如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。

  我是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见!

相关文章
|
7天前
|
算法 Java 程序员
菜鸟之路Day06一一Java常用API
《菜鸟之路Day06——Java常用API》由blue编写,发布于2025年1月24日。本文详细介绍了Java中常用的API,包括JDK7的时间类(Date、SimpleDateFormat、Calendar)和JDK8新增的时间API(ZoneId、Instant、DateTimeFormatter等),以及包装类的使用。通过多个实例练习,如时间计算、字符串转整数、十进制转二进制等,帮助读者巩固所学内容,提升编程技能。文章强调了理论与实践结合的重要性,鼓励读者多做练习以提高学习效率。
62 28
|
18天前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
138 11
|
22天前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
2月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
47 10
|
2月前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
2月前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
63 3
|
2月前
|
JSON API 数据安全/隐私保护
淘宝评论API接口操作步骤详解,代码示例参考
淘宝评论API接口是淘宝开放平台提供的一项服务,通过该接口,开发者可以访问商品的用户评价和评论。这些评论通常包括评分、文字描述、图片或视频等内容。商家可以利用这些信息更好地了解消费者的需求和偏好,优化产品和服务。同时,消费者也可以从这些评论中获得准确的购买参考,做出更明智的购买决策。
|
2月前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
97 10
|
2月前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
71 2
|
2月前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
65 11