Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类引用

Java 有用资源

Java - 流 API 改进



流是在 Java 中引入的,以帮助开发人员从对象序列执行聚合操作。 随着 Java 9 的发布,添加了一些方法使流变得更好。

takeWhile(Predicate 接口) 方法

语法

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 接口)

语法

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 方法用于防止 NullPointerExceptions 并避免对流进行空检查。 此方法返回一个包含单个元素的顺序流(如果非空),否则返回一个空流。

示例

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