Java 9 中 takewhile() 与 dropWhile() 方法在哪些方面存在差异?


**Stream** API 的 takewhile() 方法会接受所有值,直到 predicate 返回 false,而 Stream API 的 dropWhile() 方法会删除所有值,直到匹配 predicate。如果流是有序的,takewhile() 方法将返回一个流,其中包含从该流中获取且匹配 predicate 的元素的**最长前缀**,而 dropWhile() 方法将返回与 predicate 匹配后剩余的流。如果流是无序的,takewhile() 方法将返回一个流,其中包含从流中提取的与给定的 predicate 匹配的元素子集,而 dropWhile() 方法将返回一个流,其中包含与给定的 predicate 匹配后丢弃的元素子集之后的剩余元素。

takeWhile() 的语法

default Stream<T> takeWhile(Predicate<? super T> predicate)

示例

import java.util.stream.Stream;
public class TakeWhileMethodTest {
   public static void main(String args[]) {
      Stream.of("India", "Australia", "Newzealand", "", "South Africa", "England")
      .takeWhile(o->!o.isEmpty())
      .forEach(System.out::print);
   }
}

输出

IndiaAustraliaNewzealand


dropWhile() 的语法

default Stream<T> dropWhile(Predicate<? super T> predicate)

示例

import java.util.stream.Stream;
public class DropWhileMethodTest {
   public static void main(String args[]) {
      Stream.of("India", "Australia", "Newzealand", "", "England", "Srilanka")
      .dropWhile(o->!o.isEmpty())
      .forEach(System.out::print);
      System.out.println();
      Stream.of("India", "", "Australia", "", "England", "Srilanka")
      .dropWhile(o->!o.isEmpty())
      .forEach(System.out::print);
   }
}

输出

EnglandSrilanka
AustraliaEnglandSrilanka

更新于: 2020 年 2 月 21 日

2K+ 浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.