甩掉循环


lambda 在集合中的 Stream 操作

Stream 操作

Stream 操作分为 中间操作最终操作两种

中间操作 返回的依然是 stream 对象
最终操作 返回特定 的 计算结果

中间操作

包括但不局限于: map、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 unordered

  • map : 一一映射 , A -> B
  • filter : 过滤操作 , A(n) -> A(n - x)
  • distinct : 选取不同元素4, A{a, b, c, a} -> A{a, b, c}
    在有序流的情况下,不同元素的选择是稳定的。但是,在无序流的情况下,不同元素的选择不一定是稳定的,并且可以更改
  • sorted : 排序1
  • peek : 该方法主要用于支持调试,您希望在流程中流过某个特定点时查看元素
  • limit : 返回 不超过 n 长度的数据 [ limit(long n)]
  • skip : 丢弃前 n 个数据 [skip(long n)]

最终操作

包括但不局限于:forEach、 toArray、 min、 max、 count、 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 iterator等

  • forEach : 遍历
  • toArray : 转换成列表
  • min : 最小
  • max: 最大
  • count:数量

  • anyMatch: 条件判断 相当于 || 返回 boolean

  • allMatch: 条件判断 相当于 && 返回 boolean

  • noneMatch: 条件判断 相当于 ! 返回 boolean

    • 例如: Arrays.asList(1, 3, 2, 3).stream().anyMatch(e -> e==1)
  • findFirst: 查找第一个元素

    • 例如: Optional<Integer> first = integers.stream().findFirst();
    • first.get() 获取元素
    • Optional<T> findFirst()
  • findAny: 查找一个元素 相对 findFirst 具有不稳定性

    • Optional<T> findAny()
  • iterator : 迭代器

    • static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
    • static <T> Stream<T> iterate(T seed, UnaryOperator<T> f)
  • groupingBy 2 : 分组

参考内容

1. sorted
2 . groupingBy

文章作者: KawYang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 KawYang !
评论
  目录