Java如何从集合和数组获取Stream流的方法
作者: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() |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。