java iterable stream,java8 转换Iterable 至 Stream

java8 转换Iterable 至 Stream

本文简要介绍在java8中转换java Iterable对象至Stream,利用Stream执行标准操作。

1.转换Iterable 至 Stream

Iterable接口设计的目的是保持通用性,不提供任何stream方法。简单来说,你可以通过StreamSupport.stream() 方法从it实例中获取stream。

下面看一个Iterable实例:

Iterable iterable

= Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");

转换为stream的代码:

StreamSupport.stream(iterable.spliterator(), false);

注意,StreamSupport.stream() 方法第二个参数决定返回结果stream是否为并行。true为并行,否则为串行。

测试代码:

@Test

public void givenIterable_whenConvertedToStream_thenNotNull() {

Iterable iterable

= Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");

Assert.assertNotNull(StreamSupport.stream(iterable.spliterator(), false));

需要了解:流不能重用,但Iterable可以,同时提供了spliterator()方法,其返回java.lang.Spliterator 实例。

2.执行流操作

请看示例代码:

@Test

public void whenConvertedToList_thenCorrect() {

Iterable iterable

= Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");

List result = StreamSupport.stream(iterable.spliterator(), false)

.map(String::toUpperCase)

.collect(Collectors.toList());

assertThat(

result, contains("TESTING", "ITERABLE", "CONVERSION", "TO", "STREAM"));

}

3.总结

本文简短地展示了如何利用java8 StreamSupport.stream() 方法转换Iterable实例至stream实例,然后利用stream执行标准操作,如在其他任何Collection实例上操作的一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值