如何創建Boolean.FALSE
的流,比如長度爲100?生成布爾的流
什麼我掙扎是:
- 本來我打算創造
Boolean.FALSE
數組。但是new Boolean[100]
返回一個NULL
的數組。所以我相當合理地考慮使用流API作爲方便的Iterable
和幾乎(1)Iterable
操縱工具; - 沒有
Boolean
無PARAMS構造(2),因此我不能 使用Stream.generate()
,因爲它接受Supplier<T>
(3)。
我發現的是Stream.iterate(Boolean.FALSE, bool -> Boolean.FALSE).limit(100);
給出了我想要的,但它似乎並不是很優雅的解決方案,恕我直言。
還有一個選項,我發現(4)是IntStream.range(0, 100).mapToObj(idx -> Boolean.FALSE);
,這在我看來似乎更加奇怪。
儘管這些選項不違反流API的流水線概念,是否有更簡潔的方式來創建流Boolean.FALSE
?
爲什麼你認爲你不能使用'Stream.generate()'?試試這個:'Stream.generate(() - > Boolean.FALSE).limit(100)' – Jesper
我無法想象這種流的任何合理用例。如果您遵循僅使用無狀態函數的建議用法,即不依賴於處理順序,則結果始終只能是由數百個相同元素組成的流或空流。無論最終結果如何,始終可以通過單個元素流生成它。 – Holger
@Holger我在無向圖上檢測週期。需要執行的步驟之一是檢測並行邊緣。我標記我訪問過的每個頂點以檢測並行性。所以每個頂點在「被訪問」數組中都有一個匹配。迭代完成後,應該重置「被訪問」數組。在這裏,我讓這樣一個流發揮。爲了這個目的,我可以使用0和1的數組,但爲了清晰起見,我決定使用我使用的數據。 –