Cuando llamo, Stream.sort(..)¿hay una nueva matriz de elementos creados y la secuencia itera sobre la matriz ordenada recién creada?
En otras palabras, ¿cómo funciona Java 8 Stream sortbajo el capó?
                    
                        java
                                java8
                                stream-processing
                                
                    
                    
                        InformadoA
fuente
                
                fuente

Respuestas:
Puede usar grepcode.com para buscar a través del código de la biblioteca estándar de Java (y algunas otras bibliotecas). Desafortunadamente, el código de implementación del flujo es bastante abstracto. Un buen punto de partida es la
java.util.stream.SortedOpsclase interna que transforma una secuencia en una secuencia ordenada.La implementación actual (utilizada para flujos de contenedores de biblioteca estándar) lo convierte en un no-op si el flujo ya está ordenado, usa una matriz si se conoce el tamaño del flujo (
SizedRefSortingSink) o acumula todos los elementos en una ArrayList si el tamaño es desconocido (RefSortingSink).Por supuesto, dichos detalles de implementación pueden cambiar con cualquier versión, pero las consideraciones fundamentales son universales: la clasificación de una secuencia es necesariamente una operación entusiasta / de bloqueo, y la clasificación de una secuencia infinita no tiene sentido. Esto significa que ordenar una secuencia no es útil si usa secuencias porque pueden ser diferidas, pero aún así obtiene la sintaxis de secuencia conveniente.
Otros flujos tendrán que proporcionar su propia implementación de
Stream.sorted(), que probablemente será similar.fuente