Shortcuts on Collections to create Streams

Zs. gzsombor at gmail.com
Wed Mar 3 17:16:25 UTC 2021


Hi,

 As Collection already has a default implementation for 'forEach', I'm
wondering why there is no similar shortcuts for a couple of repeating
patterns around the Collection <--> Stream transitions?
For example, if you could write:
 collection.map(...) instead of collection.stream().map(...);
 collection.filter(...) instead of collection.stream().filter(...);
Or for the other direction:
 stream.toList() instead of stream.collect(Collectors.toList())
 stream.toSet() instead of stream.collect(Collectors.toSet())

They are heavily used even in OpenJDK's source code:

   -
   https://github.com/search?q=stream%5C%28%5C%29.filter%28+repo%3Aopenjdk%2Fjdk+language%3AJava&type=Code&ref=advsearch&l=Java&l=
   -  380 results, unfortunately with false matches from javax.xml.stream.
      StreamFilter
   -
   https://github.com/search?q=stream%5C%28%5C%29.map%5C%28%5C%29+repo%3Aopenjdk%2Fjdk&type=Code
      - 559 results, unfortunately with false matches from comments or
      streams().mapToInt or not related code


   -
   https://github.com/openjdk/jdk/search?q=collect%28Collectors.toList%28%29%29
   -  367 results
   -
   https://github.com/openjdk/jdk/search?q=collect%28Collectors.toSet%28%29%29
   -  117 results

Any particular reason, why adding these - 4 or more - default method to a
collection deemed unnecessary or harmful? Unfortunately I haven't been able
to find the answers for this question using internet searches.

Thanks,
 Zsombor


More information about the jdk-dev mailing list