侧边栏壁纸
博主头像
D博主等级

  • 累计撰写 35 篇文章
  • 累计创建 138 个标签
  • 累计收到 3 条评论

Java进阶篇⑨——Stream流

D
D
2022-04-04 / 0 评论 / 1 点赞 / 899 阅读 / 1,810 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-04,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Stream流

概述

  • Stream流的使用

    • 生成流

      • 通过数据源(集合,数组等)生成流

        list.stream()
        
    • 中间操作

      • 一个流后面可以跟随零个或多个中间操作,其目的主要是打开流,做出某种程度的数据过滤/映射,然后返回一个新的流,交给下一个操作使用

        filter()
        
    • 终结操作

      • 一个流只能有一个终结操作,当这个操作执行后,流就被使用 “光” 了,无法再被操作

        forEach()
        

Stream流的生成方式

  • Stream流常见生成方式

    • Collection体系的集合可以使用默认方法 stream() 生成流

      default Stream<E> stream()
      
    • Map体系的集合简介的生成流

      Stream<K> keyStream = map.keySet().stream();  // Map键生成流
      Stream<V> valueStream = map.values().stream();  // Map值生成流
      Stream<Map.Entry<String,Integer>> entryStream = map.entrySet().stream();
      // Map键值对对象生成流
      
    • 数组可以通过Stream接口的静态方法 of(T... values) 生成流

      String[] strArray = new String[1024];
      Stream<String> strArrayStream = Stream.of(strArray);  // 数组生成流方式一
      Stream<Integer> intStream = Stream.of(10,20,30);  // 数组生成流方式二
      

Stream流的常见中间操作

  • Stream<T> filter(Predicate predicate) :用于对流中的数据进行过滤

    • Predicate 接口中的方法 Boolean test(T t) :对给定的参数进行判断,返回一个布尔值
  • Stream<T> limit(long maxSize) :返回此流中的元素,截取前指定参数个数的数据

  • Stream<T> skip(long n)跳过指定参数个数的数据,返回由该流的剩余元素组成的流

  • static <T> Stream<T> concat(Stream a,Stream b)合并a和b两个流为一个流

  • Stream<T> distinct() :返回由该流的不同元素(根据 Object equals(Object o) )组成的流

  • Stream<T> sorted() :返回由此流的元素组成的流,根据自然顺序排序

  • Stream<T> sorted(Comparator comparator) :返回由该流的元素组成的流,根据提供的Comparator进行排序

  • <R> Stream<R> map(Function mapper) :返回由给定函数应用于此流的元素的结果组成的流,常用于转化

    • Function 接口中的方法 R apply(T t)
  • IntStream mapToInt(ToIntFunction mapper) :返回一个IntStream其中包含给定函数应用于此流的元素的结果

    • IntStream :表示原始int
    • ToIntFunction 接口中的方法:int applyAsInt(T value)
    • IntStream 中特有的方法的int sum() :对流中的值进行求和,并返回求和结果

Stream流的常见终结操作

  • void forEach(Consumer action) :对此流的每个元素执行操作
    • Consumer 接口中的方法 void accept(T t) :对给定的参数执行此操作
  • long count() :返回此流中的元素个数

Stream流的收集操作

  • R collect(Collector collector) :该收集方法的参数是一个Collector接口
  • 工具类Collectors提供了具体的收集方法
    • public static <T> Collector toList() :把元素收集到List集合中
    • public static <T> Collector toSet() :把元素收集到Set集合中
    • public static Collector toMap(Function keyMapper,Function valueMapper) :把元素收集到Map集合中
1

评论区