RFR: 8358533: Improve performance of java.io.Reader.readAllLines
Stuart Marks
smarks at openjdk.org
Mon Jun 23 21:25:27 UTC 2025
On Thu, 19 Jun 2025 11:08:32 GMT, Markus KARG <duke at openjdk.org> wrote:
>> Replaces the implementation `readAllCharsAsString().lines().toList()` with reading into a temporary `char` array which is then processed to detect line terminators and copy non-terminating characters into strings which are added to the list.
>
> src/java.base/share/classes/java/io/Reader.java line 508:
>
>> 506: }
>> 507:
>> 508: return lines;
>
> Do we really want to return a mutable `ArrayList` here? In earlier discussions about this very API I was told that it deliberately returns `String` instead of `CharSequence` due to *intended* immutability, even if that potentially implied slower performance. Following this logic, it would be just straightforward to `return Collections.unmodifiableList(lines);` here. 🤔
Right, the specification here requires an unmodifiable List, so an unmodifiable wrapper or a list from `List.copyOf()` is appropriate.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25863#discussion_r2162555958
More information about the core-libs-dev
mailing list