【Java8新特性】JavaStream.of()⽤法
本页将介绍Java Stream.of⽅法⽰例。Stream.of⽤于为给定元素创建顺序流。我们可以传递单个元素或多个元素。
查看javadoc中Stream.of⽅法声明。
of⽅法,其⽣成的Stream是有限长度的,Stream的长度为其内的元素个数。
values):返回含有多个T元素的Stream
of(T t):返回含有⼀个T元素的Stream
⽰例:
Stream<Integer> integerStream = Stream.of(1, 2, 3); Stream<String> stringStream = Stream.of("A");
generator
generator⽅法,返回⼀个⽆限长度的Stream,其元素由Supplier接⼝的提供。在Supplier是⼀个函数接⼝,只封装了⼀个get()⽅法,其⽤来返回任何泛型的值,该结果在不同的时间内,返回的可能相同也可
能不相同,没有特殊的要求。
generate(Supplier s):返回⼀个⽆限长度的Stream
这种情形通常⽤于随机数、常量的 Stream,或者需要前后元素间维持着某种状态信息的 Stream。
把 Supplier 实例传递给 ate() ⽣成的 Stream,默认是串⾏(相对 parallel ⽽⾔)但⽆序的(相对 ordered ⽽⾔)。
⽰例:
Stream generateA = ate(new Supplier() {
@Override
public Double get() {
return java.lang.Math.random();
}
java stream});
Stream generateB = ate(()-> java.lang.Math.random());
Stream generateC = ate(java.lang.Math::random);
以上三种形式达到的效果是⼀样的,只不过是下⾯的两个采⽤了Lambda表达式,简化了代码,其实际效果就是返回⼀个随机值。⼀般⽆限长度的Stream会与filter、limit等配合使⽤,否则Stream会⽆限制的执⾏下去,后果可想⽽知,如果你有兴趣,不妨试⼀下。
iterate
iterate⽅法,其返回的也是⼀个⽆限长度的Stream,与generate⽅法不同的是,其是通过函数f迭代对给指定的元素种⼦⽽产⽣⽆限连续有序Stream,其中包含的元素可以认为是:seed,f(seed),f(f(seed))⽆限循环。
iterate(T seed, UnaryOperator f)
⽰例:
Stream.iterate(1, item -> item + 1)
.limit(10)
.forEach(System.out::println);
// 打印结果:1,2,3,4,5,6,7,8,9,10
上⾯⽰例,种⼦为1,也可认为该Stream的第⼀个元素,通过f函数来产⽣第⼆个元素。接着,第⼆个元素,作为产⽣第三个元素的种⼦,从⽽产⽣了第三个元素,以此类推下去。需要主要的是,该Stream也是⽆限长度的,应该使⽤filter、limit等来截取Stream,否则会⼀直循环下去。
empty
empty⽅法返回⼀个空的顺序Stream,该Stream⾥⾯不包含元素项。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。