Stream API的使用

Stream API的使用

  1. Stream和collection的区别在于:

    • Stream的关注与数据的运算,基于cpu计算数据的,collection是一种静态的数据存储结构,关注数据的存储

    • Stream不会自己存储元素

    • Stream不会自己改变原对象,相反,会返回一个持有结果的新的对象

    • Stream是延迟操作的执行的,意味着只有执行等到有需要的结果时才会进行执行

Stream操作三步骤

image-20211014121313477.png

一、创建Stream

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * @author by_zhum
 * @date 2021/10/11 16:36
 * @Version 1.0
 */
public class StreamDemo {
 @Test
 public void test01() {
 /**
 * 1.通过集合的方式来创建Stream
 */
 List list = new ArrayList<>();
 // 创建串行流,按照集合的顺序来进行处理的
 Stream stream = list.stream();
 // 创建并行流,即集合中的数据不是按照顺序来进行处理的,多个线程同时操作
 Stream stringStream = list.parallelStream();
 }

 @Test
 public void test02() {
 /**
 * 2.通过数组的方式来创建Stream
 */
 Integer[] integers = {1, 2, 5, 6, 8, 1, 22, 1};
 Stream stream1 = Arrays.stream(integers);
 }

 @Test
 public void test03() {
 /**
 * 3.通过Stream。of方法来创建
 */
 Stream integerStream = Stream.of(1, 5, 6, 8, 2);
 }

 @Test
 public void test04() {
 /**
 * 4.创建无限流
 */
 // 迭代的方式  迭代偶数相加 执行10次
 Stream.iterate(0, t -> t + 2).limit(10).forEach(System.out::println);

 //生成  随机生成10个数
 Stream.generate(Math::random).limit(10).forEach(System.out::println);
 }
}

二、中间操作

1.筛选与分片

image-20211014121734057.png

2.映射

image-20211014121838700.png

3.排序

image-20211014121915684.png

三、终止操作

1.匹配与查找

image-20211014122048172.png

2.归约

image-20211014122245479.png

3.收集

image-20211014122317991.png

你可能感兴趣的:(Stream API的使用)