簡體   English   中英

Java 8無限流輸出

[英]Java 8 Infinite Stream Output

下面的代碼使用lambda expression創建空的Map Stream ,下一行用於輸出流中的任何元素。 但是在運行代碼時,它會提供無限的輸出。 我不知道為什么,因為地圖為空時它應該打印一次{} 有人可以解釋發生了什么嗎?

 Stream<Map<String,String>> mapStream = Stream.generate(() -> {
        return Collections.emptyMap();
    });
    mapStream.forEach(System.out::println);

Stream.generate的文檔中

返回無限的順序無序流,其中每個元素由提供的Supplier生成。 這適用於生成恆定流,隨機元素流等。

因此,您有一個無限的流,其中每個新元素都是通過調用Supplier來創建的,如果一個空的映射表示為{}那么您就有一個流:

{}, {}, {}, {} ...

您正在尋找的是:

Stream.of(Collections.emptyMap()).forEach(System.out::println);

只會打印{} (盡管為什么您希望這超出了我的理解...)

這就是文檔中關於Stream.generate(Supplier)

返回無限的順序無序流,其中每個元素由提供的Supplier生成。 這適用於生成恆定流,隨機元素流等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM