Phương thức takeWhile() của Stream API chấp nhận tất cả giá trị cho đến khi predicate trả về false, trong khi dropWhile() loại bỏ tất cả giá trị cho đến khi khớp với predicate. Nếu stream có thứ tự (ordered), takeWhile() trả về stream bao gồm tiền tố dài nhất (longest prefix) các phần tử lấy từ stream này khớp predicate, dropWhile() trả về stream còn lại sau khi khớp predicate. Nếu stream không có thứ tự (unordered), takeWhile() trả về stream bao gồm tập con phần tử trích xuất khớp predicate, dropWhile() trả về stream bao gồm các phần tử còn lại sau khi loại bỏ tập con khớp predicate.
Cú pháp takeWhile()
default Stream<T> takeWhile(Predicate<? super T> predicate)
Ví dụ
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);
}
}
Kết quả
IndiaAustraliaNewzealand
Cú pháp dropWhile()
default Stream<T> dropWhile(Predicate<? super T> predicate)
Ví dụ
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);
}
}
Kết quả
EnglandSrilanka AustraliaEnglandSrilanka