RFR: 8305947: SequenceInputStream implementation can use an Iterator rather than Enumeration

Aleksey Shipilev shade at openjdk.org
Mon Jul 24 09:31:45 UTC 2023


On Mon, 19 Dec 2022 11:26:25 GMT, Romain Manni-Bucau <duke at openjdk.org> wrote:

> enumeration(list) will create an enumeration, a list and an iterator whereas the impl only requires an iterator
> this PR drops the enumeration wrapper for binary constructor and just maps the enumeration to an iterator for the other case which should be a better compromise in practise.
> 
> Another side but nice effect is to have some lighter classloading (subgraph)

I guess it can be counted as micro-optimization, seeing that `Collections.enumeration` actually wraps the underlying `Iterator` into `Enumeration`, and this allows to use that `Iterator` directly in case of two-stream concatenation. The majority of JDK uses cases are 2-stream concats.

Minor nits:

src/java.base/share/classes/java/io/SequenceInputStream.java line 47:

> 45:  */
> 46: public class SequenceInputStream extends InputStream {
> 47:     private final Iterator<? extends InputStream> e;

Should be `iter` now, not `e`?

-------------

PR Review: https://git.openjdk.org/jdk/pull/11718#pullrequestreview-1543054058
PR Review Comment: https://git.openjdk.org/jdk/pull/11718#discussion_r1271984209


More information about the core-libs-dev mailing list