学科分类
目录
Java基础

创建Stream流对象

在上一小节中,介绍了聚合操作的主要使用步骤,其中首要解决的问题就是创建Stream流对象。聚合操作针对的就是可迭代数据进行的操作,如集合、数组等,所以创建Stream流对象其实就是将集合、数组等通过一些方法转换为Stream流对象。

在Java中,集合对象有对应的集合类,可以通过集合类提供的静态方法创建Stream流对象,而数组数据却没有对应的数组类,所以必须通过其他方法创建Stream流对象。针对不同的源数据,Java提供了多种创建Stream流对象的方式,分别如下:

● 所有的Collections集合都可以使用stream()静态方法获取Stream流对象;

● Stream接口的of()静态方法可以获取基本类型包装类数组、引用类型数组和单个元素的Stream流对象;

● Arrays数组工具类的stream()静态方法也可以获取数组元素的Stream流对象。

接下来,通过一个案例来学习聚合操作中如何创建Stream流对象,如文件1所示。

文件1 Example32.java

 1    import java.util.*;
 2    import java.util.stream.Stream;
 3    public class Example32 {
 4        public static void main(String[] args) {
 5              // 创建一个数组
 6            Integer[] array = { 9, 8, 3, 5, 2 };       
 7              // 将数组转换为List集合
 8            List<Integer> list = Arrays.asList(array); 
 9            // 1、使用集合对象的stream()静态方法创建Stream流对象
 10            Stream<Integer> stream = list.stream();
 11            stream.forEach(i -> System.out.print(i+" "));
 12            System.out.println();
 13            // 2、使用Stream接口的of()静态方法创建Stream流对象
 14            Stream<Integer> stream2 = Stream.of(array);
 15            stream2.forEach(i -> System.out.print(i+" "));
 16            System.out.println();
 17            // 3、使用Arrays数组工具类的stream()静态方法创建Stream流对象
 18            Stream<Integer> stream3 = Arrays.stream(array);
 19            stream3.forEach(i -> System.out.print(i+" "));
 20        }
 21    }

运行结果如图1所示。

图1 运行结果

文件1中,先创建了一个数组和一个集合,然后通过三种方式实现了Stream流对象的创建,并通过Stream流对象的forEach()方法结合Lambda表达式完成了集合和数组中元素的遍历。

小提示:

在JDK 8中,只针对单列集合Collections接口对象提供了stream()静态方法获取Stream流对象,并未对Map集合提供相关方法获取Stream流对象,所以想要用Map集合创建Stream流对象必须先通过Map集合的keySet()、values()、entrySet()等方法将Map集合转换为单列Set集合,然后再使用单列集合的stream()静态方法获取对应键、值集合的Stream流对象。

点击此处
隐藏目录