• Stream


    前言

    Stream是集合元素的函数模型,支持顺序和并行聚合操作的元素序列,不是集合,可以简单的理解为高级版的Iterator;

    获取Stream流的方式

    当我们使用一个流的时候,通常包括三个基本步骤:获取一个数据源(source)→ 数据转换→执行操作获取想要的结果

    每次转换原有 Stream 对象不改变,返回一个新的 Stream 对象(可以有多次转换),这就允许对其操作可以像链条一样排列,变成一个管道

    1. JDK8之后,在Collection<E>接口增加了一个默认的方法: default Stream<E>  stream() 可以将集合转化为流;

    2. JDK8之后,API提供了一个新的接口java.util.stream,该接口中有一个静态方法of(T...values)可以获取Stream流

    Stream源

    Collection & 数组 & 其他

     常用方法

    Stream API方法可以分为2类

    延迟方法:返回值仍然是Stream流,因此可以支持链式调用;

    终结方法:的返回值不再是Stream流本身,因此不在支持链式调用,包括count()、forEach()、collect()、reduce()、*Match()、find*();

    filter

    Stream<T> filter(Predicate<? super  T> predicate) 该方法将一个流转化为另一个子集流

     

    map

    <R> Stream<R> map(Function<? supper T, ? extends R) mapper);该方法将流中的元素映射到另一个流中;

    flatMap

    Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper) 方法将子流合并到主流中

     

    limit

    Stream<T> limit(long maxSize) 方法可以对流中元素进行截取,只取前N个;

    `

    skip

    Steam<T> skip(long n) 方法表示跳过流中前n个元素,保留之后的元素;

     concat

    static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b) 该方法将两个流合并成一个流;

     count

    long cout() 该方法用来统计流中有几个元素;

    forEach

    void forEach(Consumer<? super T> action) 该方法接受一个Consumer接口函数,每个流元素都交给该函数处理;

  • 相关阅读:
    24. Swap Nodes in Pairs
    49. Group Anagrams
    280. Wiggle Sort
    274. H-Index
    K Closest Numbers In Sorted Array
    Closest Number in Sorted Array
    Last Position of Target
    Classical Binary Search
    350. Intersection of Two Arrays II
    Sort Integers II
  • 原文地址:https://www.cnblogs.com/oxygenG/p/12563331.html
Copyright © 2020-2023  润新知