创建流的方式

javaLogo


Collection接口的stream方法可以将任何集合转化为一个流。如果是一个数组,那么可以用静态的Stream.of方法。

String contents = new String(Files.readAllBytes(
	Paths.get(alice.text)),StandardCharsets.UTF_8);
	//read file into string
Stream<string> words = Stream.of(contents.split("\\PL"));
	//split returns a String[] array

of方法具有可变长参数,因此我们可以构建具有任意数量引元的流。

Stream<string> song = String.of("gently","down","the","stream");

使用Array.stream(array,from,to)可以从数组中位于from(包含)和to(不包含)的元素创建一个流。
为了创建不包含任何元素的流,可以使用静态的Stream.empty方法。

Stream<string> silence = Stream.empty();

Stream有两个用于创建无限流的静态方法。generate方法会接受一个不包含任何引元的函数(或者从技术上讲是一个Supplier<t>接口对象),无论何时,只需要一个流类型的值,该函数就会被调用以产生一个这样的值。
我们可以像下面一样获取一个常量值的流。

Stream<string> echos = Stream.generate(()-&gt;"echos");

或者获取一个随机数的流。

Stream<double> randoms = Stream.generate(Math::random)

为了产生无限序列,例如0、1、2、3、4...,可以使用iterate方法。他接受一个“种子”值,以及一个函数(从技术上讲,值一个UnaryOperation<t>),并反复的将该函数应用到之前的结果上。如

Stream<biginteger> integers = Stream.iterate(BigInteger.ZERO,n-&gt;add(BigInteger.ONE));

该序列中的第一个元素是种子seed,第二个元素是f(seed),下一个元素的是f(f(seed)),一后以此类推。

转载于:https://my.oschina.net/depeng414/blog/3051989

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值