Java如何从集合和数组获取Stream流的方法

 更新时间:2025年01月21日 15:35:20   作者:qq_44199605  
本文详细介绍了Java中如何从集合、数组等数据结构获取Stream流,包括使用Collection接口的stream()和parallelStream()方法、Arrays类的stream()方法、Stream.of()方法以及基本类型数组的流方法等

Java从集合和数组获取Stream流

在 Java 的编程过程中,Stream 流是处理集合、数组等数据结构的重要工具,它提供了高效且简洁的操作方式。

本文将详细介绍如何从集合、数组等数据结构中获取 Stream 流。

1. 从集合获取 Stream

Java 的 Collection 接口为我们提供了直接获取 Stream 的方法:

方法

  • stream():获取一个顺序流。
  • parallelStream():获取一个并行流。

示例代码

import java.util.*;
import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        // 创建集合
        List<String> list = Arrays.asList("A", "B", "C");

        // 获取顺序流
        Stream<String> stream = list.stream();
        stream.forEach(System.out::println);

        // 获取并行流
        Stream<String> parallelStream = list.parallelStream();
        parallelStream.forEach(System.out::println);
    }
}

输出结果:

A
B
C

2. 从数组获取 Stream

Arrays 类提供了静态方法 stream() 用于从数组生成流。

方法

  • Arrays.stream(T[] array):将整个数组转换为顺序流。
  • Arrays.stream(T[] array, int startInclusive, int endExclusive):将数组的部分范围转换为流。

示例代码

import java.util.*;
import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        // 创建数组
        String[] array = { "A", "B", "C", "D" };

        // 将整个数组转换为流
        Stream<String> stream = Arrays.stream(array);
        stream.forEach(System.out::println);

        // 将数组部分范围转换为流
        Stream<String> partialStream = Arrays.stream(array, 1, 3);
        partialStream.forEach(System.out::println); // 输出 B, C
    }
}

输出结果:

A
B
C
D
B
C

3. 使用 Stream.of 获取流

Stream 接口提供了静态方法 Stream.of(),可以直接从元素或数组生成流。

示例代码

import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        // 使用 Stream.of 从元素生成流
        Stream<String> stream = Stream.of("A", "B", "C");
        stream.forEach(System.out::println);

        // 使用 Stream.of 从数组生成流
        String[] array = { "X", "Y", "Z" };
        Stream<String> arrayStream = Stream.of(array);
        arrayStream.forEach(System.out::println);
    }
}

输出结果:

A
B
C
X
Y
Z

4. 从基本类型数组获取 Stream

对于基本类型数组(如 int[]double[]),可以使用专门的流方法来生成流。

方法

  • IntStream.of(int... values)
  • DoubleStream.of(double... values)
  • Arrays.stream(int[] array)

示例代码

import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        // 使用 IntStream.of
        IntStream intStream = IntStream.of(1, 2, 3, 4);
        intStream.forEach(System.out::println);

        // 使用 Arrays.stream
        int[] intArray = { 5, 6, 7, 8 };
        IntStream arrayStream = Arrays.stream(intArray);
        arrayStream.forEach(System.out::println);
    }
}

输出结果:

1
2
3
4
5
6
7
8

5. 从 Map 获取 Stream

Map 不属于 Collection 接口的子类,因此不能直接调用 stream() 方法。

我们可以通过 entrySet()keySet()values() 间接获取流。

示例代码

import java.util.*;
import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        // 创建 Map
        Map<String, Integer> map = new HashMap<>();
        map.put("A", 1);
        map.put("B", 2);
        map.put("C", 3);

        // 获取键流
        Stream<String> keyStream = map.keySet().stream();
        keyStream.forEach(System.out::println);

        // 获取值流
        Stream<Integer> valueStream = map.values().stream();
        valueStream.forEach(System.out::println);

        // 获取键值对流
        Stream<Map.Entry<String, Integer>> entryStream = map.entrySet().stream();
        entryStream.forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()));
    }
}

输出结果:

A
B
C
1
2
3
A: 1
B: 2
C: 3

总结

数据类型方法
集合stream() 或 parallelStream()
数组Arrays.stream() 或 Stream.of()
基本类型数组IntStream.of() 或 Arrays.stream()
Map使用 entrySet()、keySet()、values()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java发送带html标签内容的邮件实例代码

    Java发送带html标签内容的邮件实例代码

    下面小编就为大家带来一篇Java发送带html标签内容的邮件实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • IDEA运行Java项目报错java: 错误: 不支持发行版本 xx的解决方法

    IDEA运行Java项目报错java: 错误: 不支持发行版本 xx的解决方法

    这篇文章主要介绍了IDEA运行Java项目报错java: 错误: 不支持发行版本 xx的解决方法,文中有详细的解决方案供大家参考,对大家解决问题有一定的帮助,需要的朋友可以参考下
    2025-04-04
  • vue3实现一个todo-list

    vue3实现一个todo-list

    这篇文章主要为大家详细介绍了基于vuejs实现一个todolist项目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助
    2021-08-08
  • Java集合教程之Collection实例详解

    Java集合教程之Collection实例详解

    集合,或者叫容器,是一个包含多个元素的对象,下面这篇文章主要给大家介绍了关于Java集合教程之Collection的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-08-08
  • java -length的三种用法说明

    java -length的三种用法说明

    这篇文章主要介绍了java -length的三种用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Spring Boot项目搭建的两种方式

    Spring Boot项目搭建的两种方式

    springboot简单快捷方便的优点深受用户喜爱,springboot开发环境搭建过程是每个开发者必须要做的工作,今天小编写的一篇教程关于Spring Boot项目搭建方法,通过两种方式给大家介绍的非常详细,需要的朋友参考下吧
    2021-06-06
  • mybatisplus添加真正的批量新增、批量更新的实现

    mybatisplus添加真正的批量新增、批量更新的实现

    这篇文章主要介绍了mybatisplus添加真正的批量新增、批量更新的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java NumberFormat 类的详解及实例

    Java NumberFormat 类的详解及实例

    这篇文章主要介绍了Java NumberFormat 类的详解及实例的相关资料,数字格式化类按照本地风格习惯进行的数字显示,需要的朋友可以参考下
    2017-08-08
  • Java实现生成Excel树形表头完整代码示例

    Java实现生成Excel树形表头完整代码示例

    这篇文章主要介绍了Java实现生成Excel树形表头完整代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Java多线程并发编程和锁原理解析

    Java多线程并发编程和锁原理解析

    这篇文章主要介绍了Java多线程并发编程和锁原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论