Java中將迭代器轉變爲流
1.概述
在這個簡短的教程中,讓我們將Java Iterable
對象轉換為Stream
並對其執行一些標準操作。
2.將Iterable
轉換為Stream
Iterable
接口在設計時牢記通用性,並且不自行提供任何stream()
方法。
簡而言之,您可以將其傳遞給StreamSupport.stream()
方法,並從給定的Iterable
實例獲取Stream
。
讓我們考慮一下Iterable
實例:
Iterable<String> iterable
= Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");
這是我們如何將此Iterable
實例轉換為Stream:
StreamSupport.stream(iterable.spliterator(), false);
請注意, StreamSupport.stream()
中的第二個參數確定生成的Stream
應該是並行還是順序。對於並行Stream
,應將其設置為true。
現在讓我們測試一下實現:
@Test
public void givenIterable_whenConvertedToStream_thenNotNull() {
Iterable<String> iterable
= Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");
Assert.assertNotNull(StreamSupport.stream(iterable.spliterator(), false));
}
還有一個簡短的說明-流不可重用,而Iterable
是可重用;它還提供了spliterator()
方法,該方法在給定Iterable
描述的元素上返回一個java.lang.Spliterator instance
。
3.執行Stream
操作
讓我們執行一個簡單的流操作:
@Test
public void whenConvertedToList_thenCorrect() {
Iterable<String> iterable
= Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");
List<String> result = StreamSupport.stream(iterable.spliterator(), false)
.map(String::toUpperCase)
.collect(Collectors.toList());
assertThat(
result, contains("TESTING", "ITERABLE", "CONVERSION", "TO", "STREAM"));
}
4。結論
這個簡單的教程展示瞭如何將Iterable
實例轉換為Stream
實例並對其執行標準操作,就像對任何其他Collection
實例所做的一樣。
所有代碼片段的實現都可以在Github項目中找到。
0 條評論,你可以發表評論,我們會進行改進
