在前一篇文章浅析Java中的Steam流中讲述了流式思想和Java中更适用于函数式编程的Stream流,以及Stream流中的一些常用方法,如forEach()
、filter()
、map()
、count()
、limit()
、skip()
、concat()
。本文中将讲述Stream中更多的方法,以及java.util.stream包下更多类型的Stream。
1. 创建Stream流
前一篇文章中介绍了最为常用的两个创建Stream流的方法,即:
- Collection集合的
`stream()
获取集合对应的Stream流
- 使用
Stream.of()
创建包含多个数据的Stream流
除此之外,Stream中还有更多用于创建流的方法,如:
static <T> Stream<T> empty()
用于创建一个空流static <T> Stream<T> generate(Supplier<? extends T> s)
:创建一个无限流,流中的元素通过反复调用s函数产生static <T> Stream<T> iterate(T seed, UnaryOperator<T> f)
:创建一个无限流,参数包含seed、在seed上调用f产生的值、在前一个元素上调用f产生的值static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
:类似于上一个方法,不同之处在于流会在遇到的第一个不满足hasNext条件时终止static <T> Stream<T> ofNullable(T t)
:返回含单个元素的流```java
import java.math.BigInteger;
import java.util.*;
import java.util.stream.Stream;
public class SomeMethodsAboutGetStream {
public static void main(String[] args) {
// 创建空流
final Stream