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 | Stream<String> combined = Stream.concat( |
当然,第一个流不应是无限的,否则第二个流将永远没有机会拼接起来。1
2
3
4
5
6java.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)