假設我有一個Java 8數據流的數組:Stream<T>[] streams
,我想創建一個Stream,其中新流的每個元素都是一個由選取一個元素組成的數組從每個最初的基礎流(假設他們都是連續的)。將Java8流的數組轉換爲元組流
舉例來說,如果我有:
streams [ 0 ] returning: ("A", "B", "C"),
streams [ 1 ] returning ("X", "Y", "Z")
and streams [ 2 ] as ("0", "1", "2")
我想返回
({ "A", "X", "0" }, { "B", "Y", "1" }, { "C", "Z", "2" })
有一些已經實現了這個碼流?我有一個想法,如何做到這一點,這將是pair case的推廣,但我想知道是否有可重用的東西已經存在。
編輯:對不起,我意識到我需要一些澄清:
我不想創建整個矩陣,我想在某時刻(第一個動態返回一行流/ X/0,然後是B/Y/1等),而不必佔用所有行的內存。對於基本流的大小(例如,取最小值,只要沒有更多元素返回的流就停止),我很合理。
我知道這可以通過首先將基礎流轉換爲迭代器,然後創建一個新的迭代器,next()從每個下劃線迭代器中選取一個元素並返回一個新行。這是我上面鏈接的一對例子,我可以在自己的方式實現它,在這裏我試圖瞭解它是否已經在某個庫中完成(我知道JDK沒有這樣的函數)。
迭代器的問題是它們會使您的流順序。如果你確定,那麼你已經找到了你的答案。 –
嗨@FedericoPeraltaSchaffner,天哪!你是對的,但簡單的解決方案應該是實現TupleSplitterator(Stream.spliterator()存在)。我會稍後再做,謝謝你的評論。 – zakmck