Aradığımda Stream.sort(..)
, oluşturulan yeni bir dizi öğe var ve akış yeni oluşturulan sıralı dizi üzerinden yineleniyor mu?
Başka bir deyişle, Java 8 Stream sort
başlık altında nasıl çalışır ?
Aradığımda Stream.sort(..)
, oluşturulan yeni bir dizi öğe var ve akış yeni oluşturulan sıralı dizi üzerinden yineleniyor mu?
Başka bir deyişle, Java 8 Stream sort
başlık altında nasıl çalışır ?
Yanıtlar:
Java standart kütüphane kodunda (ve diğer bazı kütüphanelerde) arama yapmak için grepcode.com adresini kullanabilirsiniz . Ne yazık ki, akış uygulama kodu oldukça soyut. İyi bir başlangıç noktası, bir akışı sıralı bir akışa dönüştüren dahili java.util.stream.SortedOps
sınıftır .
Şu anki uygulama (standart kütüphane kapların akışları için kullanılan) bu akış daha önce sıralansaydı no-op yapar, akımın boyutu (biliniyorsa bir dizi kullanan SizedRefSortingSink
) veya boyuta ise, bir ArrayList'in tüm elemanları birikir bilinmiyor ( RefSortingSink
).
Elbette, bu tür uygulama ayrıntıları herhangi bir sürümle değişebilir, ancak temel hususlar evrenseldir: Bir akışı sıralamak mutlaka bir istekli / engelleme işlemidir ve sonsuz bir akışı sıralamak anlamlı değildir. Bu, akışları tembel olabileceğinden kullanırsanız bir akışı sıralamanın kullanışlı olmadığı anlamına gelir, ancak yine de uygun akış sözdizimini alırsınız.
Diğer akışlar, Stream.sorted()
muhtemelen benzer olacak olan kendi uygulamalarını sağlamak zorunda kalacaklar.