###前言:
1.java8中最核心的改变应该当属Lambda表达式 和 全新的操作数组、集合的StreamAPI了
它们功能强大,方便易用。
前面已经学习了Lambda表达式了。今天就学习一下java8中操作数组和集合的全新API
###知识点一:StreamAPI简介:
####了解Stream
Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API(java.util.stream.*)。
Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。
使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,
Stream API 提供了一种高效且易于使用的处理数据的方式。
####什么是 Stream
流(Stream) 到底是什么呢?
是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。
“集合讲的是数据,流讲的是计算!”
####注意:
①Stream 自己不会存储元素。
②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
③Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。
###知识点二:使用StreamAPI的步骤(三步走操作)
1.创建 Stream
一个数据源(如:集合、数组),获取一个流
-
中间操作
一个中间操作链,对数据源的数据进行处理
-
终止操作(终端操作)
一个终止操作,执行中间操作链,并产生结果
####步骤一:创建Stream的方式
#####方式一:由集合本身创建
说明:
Java8 中的 Collection 接口被扩展,提供了两个获取流的方法:
default Stream<E> stream() : 返回一个顺序流
default Stream<E> parallelStream() : 返回一个并行流
案例:
List<Stream> list = new ArrayList<>();
Stream<Stream> stream = list.stream(); //顺序流
Stream<Stream> streamStream = list.parallelStream();//并行流
提示:collection接口新增默认方法:
#####方式二:由数组创建流
说明:
java8中的Arrrays数组工具类中新增了Stream()方法,用于将数组转换流
public static <T> Stream<T> stream(T[] array);
public static <T> Stream<T> stream(T[] array, int startInclusive, int endExclusive);
public static IntStream stream(int[] array) ;
public static IntStream stream(int[] array, int startInclusive, int endExclusive);
public static LongStream stream(long[] array);
public static LongStream stream(long[] array, int startInclusive, int endExclusive) ;
public static DoubleStream stream(double[] array) ;
public static DoubleStream stream(double[] array, int startInclusive, int endExclusive) ;
实例:
//通过Arrays中的Stream()方法,获取一个数组流:
int[] ints = new int[10];
IntStream stream = Arrays.stream(ints);
####方式三:通过Stream类的静态方法 of创建;有具体的值或者对象创建
1.接口方法:
public static<T> Stream<T> of(T t)
public static<T> Stream<T> of(T... values)
2.案例:
//将传入的1,2,3转换为流
Stream<Integer> integerStream = Stream.of(1, 2, 3);
3.Stream方法定义:
####方式四:由函数创建流:创建无限流
1.说明:
1. 迭代流
public static<T> Stream<T> iterate(final T seed, final
UnaryOperator<T> f)
2.生成流
public static<T> Stream<T> generate(Supplier<T> s) :
本人个人博客:https://elfgirl.top/