takeWhile(Predicate Interface)
方法
语法
default Stream<T> takeWhile(Predicate<? super T> predicate)
takeWhile
方法接收所有元素直到给定的谓词返回 false
。对于有序流,它返回一个由匹配给定谓词的最长前缀组成的流。
示例
package com.tutorialspoint;
import java.util.stream.Stream;
public class Tester {
public static void main(String[] args) {
Stream.of("a","b","c","","e","f").takeWhile(s->!s.isEmpty())
.forEach(System.out::print);
}
}
输出
takeWhile
方法取到 a
, b
, 和 c
值,然后一旦字符串为空,它就停止执行。
abc
dropWhile(Predicate Interface)
方法
语法
default Stream<T> dropWhile(Predicate<? super T> predicate)
dropWhile
方法丢弃开头的所有值直到给定的谓词返回 true
。对于有序流,它返回一个在丢弃匹配给定谓词的最长前缀之后的剩余元素组成的流。
示例
package com.tutorialspoint;
import java.util.stream.Stream;
public class Tester {
public static void main(String[] args) {
Stream.of("a","b","c","","e","f").dropWhile(s-> !s.isEmpty())
.forEach(System.out::print);
System.out.println();
Stream.of("a","b","c","","e","","f").dropWhile(s-> !s.isEmpty())
.forEach(System.out::print);
}
}
输出
dropWhile
方法丢弃 a
, b
和 c
值,然后一旦字符串为空,它就取所有剩下的值。
ef
ef
iterate
方法
语法
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
iterate
方法现在有一个 hasNext
谓词作为参数,当 hasNext
谓词返回 false
时停止循环。
示例
package com.tutorialspoint;
import java.util.stream.IntStream;
public class Tester {
public static void main(String[] args) {
IntStream.iterate(3, x -> x < 10, x -> x+ 3).forEach(System.out::println);
}
}
输出
3
6
9
ofNullable
方法
语法
static <T> Stream<T> ofNullable(T t)
ofNullable
方法是为了防止 NullPointerException
并避免对流进行空检查而引入的。如果非空,则此方法返回包含单个元素的顺序流,否则返回空流。
示例
package com.tutorialspoint;
import java.util.stream.Stream;
public class Tester {
public static void main(String[] args) {
long count = Stream.ofNullable(100).count();
System.out.println(count);
count = Stream.ofNullable(null).count();
System.out.println(count);
}
}
输出
1
0