如何中止迭代Java Stream forEach
過濾Java中的可選流
Java 8並行流中的自定義線程池
合併Java流
map()和flatMap()之間的區別
Java流的字符串操作
如何使用索引迭代流
Java中將迭代器轉變爲流
如何在Java中獲取流的最後一個元素?
將字符串轉換為字符流
Java中的“流已被操作或關閉”異常
Java 8和無限流
如何向流中添加單個元素
Java 8中的原始類型流
在Java Stream API中有所不同
Java 9 Stream API的改進
Java Spliterator簡介
如何在Java 8流中使用if / else邏輯
Java 8謂詞鏈
具有Lambda表達式的Java流過濾器
用Java流求和
Java 8 Streams peek() API
與Map一起使用流
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項目中找到。