当前位置:Java -> 在Java中探索TakeWhile和DropWhile函数
在Java Stream API上,‘takeWhile’方法用于根据指定条件从流中提取元素。'takeWhile'特别适用于当我们希望从流的开头限制取出元素直到某个条件变为false的情况。
签名: Stream<T> takeWhile(Predicate<? super T> predicate)
示例:
List<Integer> numbers = List.of(1,2,3,4,5,6,7,8);
numbers.stream()
.takeWhile(x -> x < 5)
.forEach(System.out :: println); # 1234
‘dropWhile’正好是‘takeWhile’方法的相反,‘dropWhile’方法在删除满足给定谓词的最长元素前缀后返回由流中剩余元素组成的流。
签名: Stream<T> dropWhile(Predicate<? super T> predicate)
示例:
private static void dropWhileDemo(){
List<Integer> numbers = List.of(1,2,3,4,5,6,7,8);
numbers.stream()
.dropWhile(x -> x < 5)
.forEach(System.out :: print);
}
#5678
当您希望从流的开头提取元素直到某个条件不满足时,请使用'takeWhile'。用于创建满足特定条件的元素子集。
当您希望从流的开头跳过元素直到某个条件变为false时,请使用'dropWhile'。在基于条件要排除元素前缀时非常有用。
假设我们有一个整数列表,您想使用传统for循环找到并打印出满足某个条件为止的所有元素。
List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8);
int condition = 5;
for (int number : numbers) {
if (number < condition) {
System.out.print(number);
} else {
break;
}
}
让我们使用‘takeWhile’方法实现相同的结果。
List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8);
int condition = 5;
numbers.stream()
.takeWhile(num -> num < condition)
.forEach(System.out :: print);
List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8);
int condition = 5;
for (int number : numbers) {
if (number > condition) {
System.out.print(number);
}
continue;
}
让我们使用‘dropWhile’方法实现相同的结果。
numbers.stream()
.dropWhile(x -> x <= condition)
.forEach(System.out :: print);
List<Integer> numbers = List.of(1,2,3,4,5,6,7,8,9);
List<Integer> takeWhileAndLimit = numbers.stream()
.takeWhile(x -> x < 6)
.limit(3)
.collect(Collectors.toList());
System.out.println("TakeWhile and Limit: " + takeWhileAndLimit);
// Using dropWhile and limit
List<Integer> dropWhileAndLimit = numbers.stream()
.dropWhile(x -> x < 6)
.limit(3)
.collect(Collectors.toList());
System.out.println("DropWhile and Limit: " + dropWhileAndLimit);
# TakeWhile and Limit: [1, 2, 3]
# DropWhile and Limit: [6, 7, 8]
- 数据过滤和转换
- 高效处理大型或潜在无限流
- 解析和验证
- 领域特定用例,例如获取数据库记录直到满足条件为止。
推荐阅读: 14.线程的sleep()方法和yield()方法有什么不同?
本文链接: 在Java中探索TakeWhile和DropWhile函数