1.4 提取子流并合并流

1.4 提取子流并合并流

调用stream.limit(n)返回一个新的流,该流在n个元素之后(或当如果较短,则原始流结束)。此方法适用于切割一个特定大小的流。例如,

1
Stream<Double> randoms = Stream.generate(Math::random).limit(100);

将会生成一个包含100个随机数的流

调用stream.skip(n)恰好相反。它丢弃前 n 个元素。在我们的示例中,这很方便,由于 split() 方法,当第一个元素是不需要的空字符串时,我们可以通过调用 skip() 来消除它:

1
Stream<String> words = Stream.of(contents.split("[\\P{L}]+")).skip(1);

你可以使用Stream类的静态方法 concat() 来连接两个流:

1
2
3
Stream<String> combined = Stream.concat(
letters("Hello"), letters("World"));
// Yields the stream ["H", "e", "l", "l", "o", "W", "o", "r", "l", "d"]

当然,第一个流不应是无限的,否则第二个流将永远没有机会拼接起来。

1
2
3
4
5
6
java.util.stream.Stream 8
Stream<T> limit(long maxSize)

• Stream<T> skip(long n)

static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)

坚持原创技术分享,您的支持将鼓励我继续创作!