Stream篇

 1 /**
 2      * Java 8引入了全新的Stream API。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同.
 3      * Java里面定义Stream:
 4      *      A sequence of elements supporting sequential and parallel aggregate operations.
 5      * 解读:
 6      *  Stream是元素的集合,这点让Stream看起来用些类似Iterator; 可以支持顺序和并行的对原Stream进行汇聚的操作;
 7      *  Stream<T>接口继承自BaseStream<T, S extends BaseStream<T, S>>,而BaseStream接口则是Stream的基本定义接口.
 8      *
 9      * BaseStream的核心接口方法:
10      *      Iterator<T> iterator();         表明Stream能够进行迭代操作
11      *      Spliterator<T> spliterator();   表明Stream能够进行分割迭代
12      *      boolean isParallel();           判断Stream是否是并行的Stream
13      *      S sequential();                 获取串行的Stream
14      *      S parallel();                   获取并行的Stream
15      *      S unordered();                  获取无序的Stream
16      *      S onClose(Runnable closeHandler);   返回一个同样的Stream,并同时执行一个Runnable,而Stream<T>继承了BaseStream<T, Stream<T>,
17      *      则说明Stream具有BaseStream接口中所描述的方法的能力. 并且Stream对其进行了扩展,如果说BaseStream只是定义了流(Stream)具有哪些能力,
18      *      则Stream接口则定义了一个具体的流能做哪些事情.
19      *
20      * 以下是Stream的的核心接口方法:
21      *      Stream<T> filter(Predicate<? super T> predicate)                    在Stream中过滤符合指定条件的元素
22      *      <R> Stream<R> map(Function<? super T, ? extends R> mapper)          将Stream中的元素转换成另一种数据格式
23      *      IntStream mapToInt(ToIntFunction<? super T> mapper)                 将Stream中的元素转换成int类型的值
24      *      LongStream mapToLong(ToLongFunction<? super T> mapper)              将Stream中的元素转换成long类型的值
25      *      DoubleStream mapToDouble(ToDoubleFunction<? super T> mapper)        将Stream中的元素转换成double类型的值
26      *      <R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)    将stream中的元素转换成stream
27      *      IntStream flatMapToInt(Function<? super T, ? extends IntStream> mapper)             将stream中的元素转换成int类型的stream
28      *      LongStream flatMapToLong(Function<? super T, ? extends LongStream> mapper)          将stream中的元素转换成long类型的stream    
29      *      DoubleStream flatMapToDouble(Function<? super T, ? extends DoubleStream> mapper)    将stream中的元素转换成double类型的stream
30      *      Stream<T> distinct()        将Stream中重复的元素去除掉
31      *      Stream<T> sorted()          对Stream中的元素进行排序
32      *      Stream<T> sorted(Comparator<? super T> comparator)          对Stream中的元素进行指定比较器进行排序
33      *      Stream<T> peek(Consumer<? super T> action)                  对Stream中的元素都调用指定的方法,不影响原有元素内容
34      *      Stream<T> limit(long maxSize)                               限制Stream的元素内容的大小
35      *      Stream<T> skip(long n)                                      获取跳过指定长度的Stream
36      *      void forEach(Consumer<? super T> action)                    遍历处理Stream中的元素
37      *      void forEachOrdered(Consumer<? super T> action)             按照顺序遍历处理Stream中的元素
38      *      Object[] toArray()                                          将Stream转换成对象数组
39      *      <A> A[] toArray(IntFunction<A[]> generator)                 将Stream 转换成指定对象的数组
40      *      T reduce(T identity, BinaryOperator<T> accumulator)         对Stream进行规约操作
41      *      Optional<T> reduce(BinaryOperator<T> accumulator)           对Stream进行规约操作
42      *      <U> U reduce(U identity, BiFunction<U, ? super T, U> accumulator, BinaryOperator<U> combiner)  对Stream进行规约操作
43      *      <R> R collect(Supplier<R> supplier, BiConsumer<R, ? super T> accumulator, BiConsumer<R, R> combiner)   通过指定的收集器,收集Stream的内容
44      *      <R, A> R collect(Collector<? super T, A, R> collector)      通过指定的收集器,收集Stream的内容
45      *      Optional<T> min(Comparator<? super T> comparator)           通过指定的比较器获取元素的最小值
46      *      Optional<T> max(Comparator<? super T> comparator)           通过指定的比较器获取元素的最大值
47      *      long count()                                                获取Stream的元素内容大小
48      *      boolean anyMatch(Predicate<? super T> predicate)            判断Stream中是否含有指定要求的元素
49      *      boolean allMatch(Predicate<? super T> predicate)            判断Stream中所有元素是否符合指定要求
50      *      boolean noneMatch(Predicate<? super T> predicate)           判断Stream中所有元素是否都不符合指定要求
51      *      Optional<T> findFirst()                                     获取Stream中的第一个元素
52      *      Optional<T> findAny()                                       随机获取Stream中的一个元素
53      *      public static<T> Builder<T> builder()                       获取一个Stream的构造器
54      *      public static<T> Stream<T> empty()                          获取一个空的Stream
55      *      public static<T> Stream<T> of(T t)                          向一个Stream中添加元素
56      *      public static<T> Stream<T> of(T... values)                  向一个Stream中添加元素列表
57      *      public static<T> Stream<T> iterate(final T seed, final UnaryOperator<T> f)              迭代Stream
58      *      public static<T> Stream<T> generate(Supplier<T> s)                                      根据指定需求生成一个Stream
59      *      public static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)        连接两个Stream成一个Stream
60      */

 

posted @ 2020-07-24 15:52  为你编程  阅读(130)  评论(0)    收藏  举报