java如何创建一个流_如何在 Java 中创建流

可以使用 Java 8 开始添加到 Collection 接口的 stream 方法将任何 collection 转换为 stream。如果是数组,则可用静态 Stream.of 方法获得 stream。

Stream words = Stream.of(contents.split("[\\P{L}]+"));

// split returns a String[] array

of 方法有可变长参数,因此可以根据任意数量的参数构造流:

Stream song = Stream.of("gently", "down", "the", "stream");

使用 Arrays.stream(array,from,to) 可以从数组的一部分生成流。如果要创建没有元素的流,可使用静态 Stream.empty 方法:

Stream silence = Stream.empty();

// Generic type is inferred; same as Stream.empty()

Stream 接口中的 generate 方法可用于生成无限流。每当需要用到一个值时,都会调用函数产生一个值。

例如,可以用以下方式创建返回常量的流:

Stream echos = Stream.generate(() -> "Echo");

或者,返回随机数的流:

Stream randoms = Stream.generate(Math::random);

如果要生成像 0,1,2,3… 这样的序列,那么可以调用 iterate 方法,这个方法需要两个参数,第一个参数获取一个“种子”,第二个参数是一个函数,例如:

Stream integers

= Stream.iterate(BigInteger.ZERO, n -> n.add(BigInteger.ONE));

以上方法调用后生成的序列的第一个元素是 BigInteger.ZERO 这个“种子”,第二个元素是 f(seed),也就是 2,第三个元素是 f(f(seed)),也就是 3,以此类推。这里的 f() 函数就是上面的第二个参数。

Java 8 发行版已将许多产生流的方法添加到 API。例如,Pattern 类有方法 splitAsStream,该方法通过正则表达式拆分 CharSequence。可以使用以下语句将字符串拆分为单词:

Stream words

= Pattern.compile("[\\P{L}]+").splitAsStream(contents);

静态 Files.lines 方法返回文件中所有行的 Stream。Stream 接口有 AutoCloseable 作为超级接口。当在流上调用 close 方法时,底层文件也将关闭。因此最好使用 Java 7 的 try-with-resources 语句:

try (Stream lines = Files.lines(path)) {

//Do something with lines

}

当 try 语句块正常退出或异常退出时,将关闭流及其附带的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值