[英]Java 8 Infinite Stream Output
下面的代碼使用lambda expression
創建空的Map Stream
,下一行用於輸出流中的任何元素。 但是在運行代碼時,它會提供無限的輸出。 我不知道為什么,因為地圖為空時它應該打印一次{}
。 有人可以解釋發生了什么嗎?
Stream<Map<String,String>> mapStream = Stream.generate(() -> {
return Collections.emptyMap();
});
mapStream.forEach(System.out::println);
返回無限的順序無序流,其中每個元素由提供的
Supplier
生成。 這適用於生成恆定流,隨機元素流等。
因此,您有一個無限的流,其中每個新元素都是通過調用Supplier
來創建的,如果一個空的映射表示為{}
那么您就有一個流:
{}, {}, {}, {} ...
您正在尋找的是:
Stream.of(Collections.emptyMap()).forEach(System.out::println);
只會打印{}
。 (盡管為什么您希望這超出了我的理解...)
這就是文檔中關於Stream.generate(Supplier)
:
返回無限的順序無序流,其中每個元素由提供的
Supplier
生成。 這適用於生成恆定流,隨機元素流等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.