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
廣告