流的简单实用

1. 获取流

  • 所有的Collection集合都可以通过Stream默认方法获取流。

  • Stream接口的静态方法of可以获取数组对应的流。

  • 注意:map转换为Stream流需要先分别把键值放进集合再转换成流。

Map<String,String> map = new HashMap<>();
Set<String> KeySet = map.keySet();
Stream<String> stream1 = KeySet.stream();
Collection<String> values = map.values();
Stream<String> stream2 = values.stream();
Set<Map.Entry<String,String>> entries = map.entrySet();
Stream<Map.Entry<String,String>> stream4 = entries.stream();

2. 常用方法

  • 延迟方法:不立即执行得到结果;返回值是stream接口类型的方法,支持链式调用,是stream接口的抽象方法。

  • 终结方法:立即执行得到结果;返回值不是stream接口类型的方法,不支持链式调用,是stream接口的抽象方法。

    • 其包括:countforeach方法。
    • 注意:stream中除了终结方法就是延迟方法。
  • filter方法:过滤,通过filter方法将一个流转换成另一个子集流。(接收Predicate接口,可以用lambda简化)

  • map方法:映射,将一个流中元素映射到另一个流中。(接收Function方法,需要一个Function函数式接口参数,可以将T类型转换为R类型的流。)

  • skip方法:跳过,希望跳几个元素就写几;因为第一个的索引是1不是0.(如果流的长度大于n,则会得到长 度为0的空流。)

  • count方法:统计,此方法是终结方法。

  • foreach方法:遍历,和增强for不同。(foreach方法接收Consumer接口,可以用lambda表达式简化。)

  • limit方法:截取,对流进行截取,只用前n个。(数据类型是long类型)

  • concat方法:合并,将两个流的数据合并。(这是stream流的静态方法,不包含在延迟方法和终结方法范围内)
posted @ 2021-03-29 20:54  guanghen  阅读(73)  评论(0)    收藏  举报