A couple of blog posts with the same issue. http://winterbe.com/posts/2015/03/05/fixing-java-8-stream-gotchas-with-intellij-idea/ http://benjiweber.co.uk/blog/2015/03/06/adding-tolist-to-java-streams/ http://javarevisited.blogspot.dk/2015/03/5-ways-to-convert-java-8-stream-to-list.html
It is also on the top 10 questions on stackoverflow on Java 8 http://stackoverflow.com/questions/tagged/java-8 - Kasper On Tue, Apr 28, 2015 at 10:22 AM, Kasper Nielsen <kaspe...@gmail.com> wrote: > On Tue, Apr 28, 2015 at 9:16 AM, Paul Sandoz <paul.san...@oracle.com> > wrote: > >> On Apr 27, 2015, at 10:34 PM, Kasper Nielsen <kaspe...@gmail.com> wrote: >> > The other default function I would like to see is stream.toList() (I can >> > live with collectToList) which is short for >> s.collect(Collectors.toList()). >> > 50 % of my terminal functions are s.collect(Collectors.toList()). >> >> Can you live with a static import and: >> >> s.collect(toList()) >> >> ? which is rather close to "collectToList". >> >> When designing j.u,s.Stream we made a conscious decision to not bind it >> to j.u collection types. A Stream could be integrated with other forms of >> collections (e.g. GS Collections). >> > > First, if you are using any kind of modern IDE you have some kind of > intelligent completion which will suggest collectToList the moment you > press the 'c' in stream.c... > The other one you have to create an additional import, and invoke a static > method (Yes I know most IDEs makes this easy as well) > But we are still talking about something like 1 second vs 5 seconds. > > Second, s.collect(toList()) is just not naturally for most users. Sure > readers on this list understands how the collect method works. But I don't > think many novice/intermediate users will. > > Third, Yes there are a lot of different collections that a stream can be > integrated with. But we are talking about roughly 50 % of the usage. > > Fourth, this hasn't actually anything to do with ease of use but > performance. But I have a very fast stream implementation where I would > like to provide a fast (and easy) way to return the stream elements as a > list. This is mainly in situations where I know the number of elements in > the result (which is quite often if you don't use filters). By having a > toList() method I can implement, I can avoid the array list resizings in > s.collect(toList()). > This is actually also why I would prefer if it was called toList() and not > collectToList() as I think it is implementation detail how the list > generation is done. > > - Kasper >