Java9 Stream API改进
1 Java9 Stream API新增方法
在Java 9中,改进了Stream API,并将新方法添加到Stream接口。这些方法如下表所示。
修复 | 方法 | 描述 |
---|---|---|
default Stream<T> | takeWhile(Predicate<? super T> predicate) | 如果此流是有序的,它将返回一个流,该流由与此流中匹配给定Predicate的元素的最长前缀组成。否则,如果此流是无序的,则返回一个流,该流由从该流中获取的与给定Predicate匹配的元素的子集组成。 |
default Stream<T> | dropWhile(Predicate<? super T> predicate) | 如果删除此流,则返回一个包含该流其余元素的流,然后删除与给定Predicate匹配的元素的最长前缀。否则,如果此流是无序的,则返回在删除与给定Predicate匹配的元素子集之后由该流的其余元素组成的流。 |
static <T> Stream<T> | ofNullable(T t) | 如果不为null,则返回包含单个元素的顺序Stream,否则返回空Stream。 |
static <T> Stream<T> | iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next) | 以满足给定的hasNext的Predicate为条件,将通过将给定的next函数迭代应用到初始元素而产生的顺序有序Stream返回。当hasNext的Predicate返回false时,流终止。 |
2 Java Stream API:takeWhile()方法
Stream takeWhile方法采用与其Predicate匹配的每个元素。当得到不匹配的元素时,它停止。它返回包含所有匹配元素的元素子集,流的其他部分被丢弃。
3 Java Stream API:takeWhile()方法案例1
在此示例中,我们有一个整数列表,并使用takewhile方法获取了偶数值。
/**
* 一点教程网: http://www.yiidian.com
*/
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
List<Integer> list
= Stream.of(1,2,3,4,5,6,7,8,9,10)
.takeWhile(i -> (i % 2 == 0)).collect(Collectors.toList());
System.out.println(list);
}
}
本示例返回一个空列表,因为它在第一个列表元素处失败,并且takewhile在此处停止。
输出结果为:
[]
4 Java Stream API:takeWhile()方法案例2
在此示例中,我们获得了前两个元素,因为它们是偶数且停在第三个元素。
/**
* 一点教程网: http://www.yiidian.com
*/
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
List<Integer> list
= Stream.of(2,2,3,4,5,6,7,8,9,10)
.takeWhile(i -> (i % 2 == 0)).collect(Collectors.toList());
System.out.println(list);
}
}
输出结果为:
[2,2]
5 Java Stream API:dropWhile()方法
Stream dropWhile方法根据流元素的顺序返回结果。
有序流:在删除与给定Predicate匹配的元素后,返回包含元素的流。
无序流:在删除与给定Predicate匹配的元素子集之后,它返回包含该流剩余元素的流。
6 Java Stream API:dropWhile()方法案例
/**
* 一点教程网: http://www.yiidian.com
*/
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
List<Integer> list
= Stream.of(2,2,3,4,5,6,7,8,9,10)
.dropWhile(i -> (i % 2 == 0)).collect(Collectors.toList());
System.out.println(list);
}
}
输出结果为:
[3, 4, 5, 6, 7, 8, 9, 10]
7 Java Stream API:ofNullable()方法
Stream ofNullable方法返回包含单个元素(如果非null)的顺序流。否则,它将返回一个空流。
它有助于处理空流和NullPointerException。
8 Java Stream API:ofNullable()方法案例1
/**
* 一点教程网: http://www.yiidian.com
*/
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
List<Integer> list
= Stream.of(2,2,3,4,5,6,7,8,9,10)
.dropWhile(i -> (i % 2 == 0)).collect(Collectors.toList());
System.out.println(list);
}
}
输出结果为:
25
Stream can have null values also.
9 Java Stream API:ofNullable()方法案例2
/**
* 一点教程网: http://www.yiidian.com
*/
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
Stream<Integer> val
= Stream.ofNullable(null);
val.forEach(System.out::println);
}
}
该程序不会产生任何输出。
10 Java Stream API:迭代方法
新的重载方法iterate已添加到Java 9流接口。此方法允许我们迭代流元素直到指定条件。
它需要三个参数:seed,hasNext和next。
11 Java Stream API:迭代方法案例
/**
* 一点教程网: http://www.yiidian.com
*/
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
Stream.iterate(1, i -> i <= 10, i -> i*3)
.forEach(System.out::println);
}
}
输出结果为:
1
3
9
热门文章
优秀文章