中间操作2之takeWhile、dropWhile、iterate、ofNullable (java9)

1.takeWhile

从Stream中依次获取满足条件的元素,直到不满足条件为止结束获取

 /**
 * 举例:Stream中的元素 12, 4, 3, 6, 8, 9
 * 
 * 条件是 x -> x % 2 == 0 ,即判断是否为偶数,即当遇到元素不为偶数时终止获取
 * 
 * 那么得到的结果输出就是,12, 4 因为下一个元素为3不为偶数,即结束获取,丢弃后面的其他元素
 */
IntStream.of(12, 4, 3, 6, 8, 9).takeWhile(x -> x % 2 == 0).forEach(System.out::print);

2.dropWhile

从Stream中依次删除满足条件的元素,直到不满足条件为止结束删除

/**
 * 举例:Stream中的元素 12, 4, 3, 6, 8, 9
 * 
 * 条件是 x -> x % 2 == 0 ,即判断是否为偶数,即当遇到元素不为偶数时终止删除
 * 
 * 那么得到的结果输出就是,3, 6, 8, 9 因为下一个元素为3不为偶数,即结束删除,返回3及以后剩下的所有元素
 */
IntStream.of(12, 4, 3, 6, 8, 9).dropWhile(x -> x % 2 == 0).forEach(System.out::print);

3.iterate

方法允许使用初始种子值创建顺序(可能是无限)流,并迭代应用指定的下一个方法。 当指定的 hasNext 的 predicate 返回 false 时,迭代停止。

static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
IntStream.iterate(3, x -> x < 10, x -> x+ 3).forEach(System.out::println);
//执行输出结果为:
//3
//6
//9

4.ofNullable

方法可以预防 NullPointerExceptions 异常, 可以通过检查流来避免 null 值。
如果指定元素为非 null,则获取一个元素并生成单个元素流,元素为 null 则返回一个空流。

static <T> Stream<T> ofNullable(T t)
long count = Stream.ofNullable(100).count();
System.out.println(count);
  
count = Stream.ofNullable(null).count();
System.out.println(count);
//执行输出结果为:
//1
//0

猜你喜欢

转载自blog.csdn.net/weixin_42868638/article/details/110224189