Java基础 Stream 流的使用步骤

发布时间 2023-10-19 15:11:51作者: 嘎嘎鸭2

步骤:

1. 先得到一条 Stream 流(流水线),并把数据放上去

2. 使用 中间方法 对流水线上的数据进行操作

3. 使用 终结方法 对流水线上的数据进行操作

 

单列集合:default  Stream<E> stream ()   →  Collection 中的默认方法

双列集合:无法直接使用 stream 流,需要通过 keySet () 或者 entrySet () 先转成单列集合,再获取 stream 流

数组:public  static <T>  Stream<T>  stream ( T [ ]  array )   →   Arrays 工具类中的静态方法

一堆零散数据:public  static<T>  Stream<T>  of ( T ...  values )  →  Stream 接口中的静态方法

 

Stream 接口中静态方法 of 的细节:方法的形参是一个可变参数,可以传递一堆零散的数据,也可以传递数组,但是数组必须是引用数据类型的,如果传递基本数据类型,该方法是不会整体自动装箱的,而是会把整个数组当作一个元素 放到 Stream 流当中。我们想要的是把数组里面的数据放到 Stream 流当中,而不是把数组整体放到流当中。

 

举例:

1. 单列集合:

// 单列集合获取 Stream 流
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c", "d", "e");
// 因为 ArrayList 是 Collection 接口的实现类,所以可以直接调用。
// 获取一条流水线,并把集合中的数据放到流水线上
Stream<String> stream1 = list.stream();
// 使用终结方法 打印一下流水线上的所有数据
stream1.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
// s 依次表示流水线上的每一个数据
System.out.println(s);
}
});
简写形式:也可以直接链式调用:list.stream().forEach(s -> System.out.println(s));


2. 双列集合:
// 双列集合获取 Stream 流
HashMap<String, Integer> hm = new HashMap<>();
hm.put("a", 1);
hm.put("b", 2);
hm.put("c", 3);
hm.put("d", 4);
// 第一种方法获取 Stream 流
hm.keySet().stream().forEach(s -> System.out.println(s)); // a b c d
// 第二种方法获取 Stream 流
hm.entrySet().stream().forEach(s -> System.out.println(s)); // a=1 b=2 c=3 d=4


3. 数组:
int[] arr = {1, 2, 3, 4, 5, 6};
// 获取 Stream 流
Arrays.stream(arr).forEach(s -> System.out.println(s));


4.一堆零散数据:
Stream.of(1, 2, 3).forEach(s -> System.out.println(s));