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() |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论