Java 中有關抽象的可遍歷的對象有 Iterator, Iterable 和 Java 8 的 Stream, Iterable 可簡單的用如下代碼轉換爲 Stream
StreamSupport.stream(iterable.spliterator(), false)
再回過頭來,爲什麼要把 Iterator 或 Iterable 轉換爲 Stream, 因爲 Iterator 和 Iterable 只提供有限的遍歷操作,如 Iterator 接口的全部四個方法
hasNext()
next()
forEachRemaining(consumer)
remove()
同樣 Iterable 也只有 iterator()
, forEach(consumer)
, 和 spliterator()
方法。而 Java 8 的 Stream 就大不一樣的,帶有大量的鏈式操作方法,如 filter, map, flatMap, collect 等。
因此如果我們已有一個 Iterator 類型,能夠被轉換爲 Stream 類型的話將會大大簡化後續的轉換,處理操作。具體的從 Iterator 到 Stream 的轉換方式有兩種 閱讀全文 >>