知识基础:lambda表达式,主要用其来简化集合流式编程中的各种操作。

流式编程的步骤

  1. 获取数据源,将数据源的数据读取到流中
  2. 对流中的数据进行处理
  3. 整合处理完毕的数据

一、数据源的获取

数据源一般是集合或者数组,都能从这两者上读取出stream流,两者获取stream流的方式以及最终获取到的stream流有些许区别。 注意在集合中只能存放引用类型。

从Collection 集合中获取stream流

// 从 List集合获取stream流
ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1,2,3,4,5,6));
Stream<Integer> listStream = list.stream();
// 从 Set 集合获取stream流
HashSet<Integer> set = new HashSet<>(Arrays.asList(1,2,3,4,5,6));
Stream<Integer> setStream = set.stream();

从Map 集合中获取stream流

HashMap<String, Integer> hashMap = new HashMap<>();
// 获取键的stream流
Stream<String> keyStream = hashMap.keySet().stream();
// 获取值的stream流
Stream<Integer> valueStream = hashMap.values().stream();
// 获取键值对的stream流
Stream<Map.Entry<String, Integer>> entryStream = hashMap.entrySet().stream();

从数组中获取stream流

//从数组中获取stream流有两种方式
// 1. 通过数组的Arrays.stream 方法,此方法对于基本数据类型只能对int、long、double进行转换,对于其余基本数据类型会报错
String[] chars = {"1","2","3","4"};
Stream<String> stringStream = Arrays.stream(chars);
// 2. 通过Stream流的Stream.of 方法,可转换基本数据类型,转换出来是基本类型数组的形式。
String[] chars = {"1","2","3","4"};
Stream<String> chars1 = Stream.of(chars);

流中数据的特点

  1. Stream方法返回的是新的流;
  2. 读取到流中的数据就与数据源的数据不再有关系,可以对流中的数据进行任意操作,而不用担心会影响数据源中的数据
  3. Stream不调用终止方法,中间的操作不会执行。

串行流和并行流的区别?

运行效率:一般来说并行流的运行效率相比起串行流速度要快一些,