Jak omówiono w dokumencie this question, implementacja distinct()
jest w stanie użyć bardziej wydajnego algorytmu, gdy strumień, na którym działa, jest znany podczas sortowania. Jak możemy osiągnąć podobny wynik, jeśli wiemy, że strumień jest sortowany (np. Ponieważ pochodzi on z zewnętrznego wstępnie posortowanego źródła danych, takiego jak zapytanie SQL z klauzulą order by
), ale nie jest oznaczony jako taki? Jest operacja unordered()
, która usuwa flagi zamawiania, ale z tego, co widzę, nie można powiedzieć systemowi, że dane zostały zamówione na zewnątrz.Strumienie Java: distinct() na wstępnie posortowanym strumieniu?
7
A
Odpowiedz
3
Można by utworzyć spliterator wokół istniejącej kolekcji na przykład:
List<Integer> list = Arrays.asList(1, 2, 3, 4);
Spliterator<Integer> sp = Spliterators.spliterator(list, Spliterator.SORTED);
System.out.println(sp.hasCharacteristics(Spliterator.SORTED)); // true
Powiązane problemy
- 1. Strumienie Java - odchylenie standardowe
- 2. Strumienie Java 8 "ifPresent"
- 3. Strumienie Java 8, lambdas
- 4. Strumienie Java 8 - limit czasu?
- 5. Java 8 strumienie - stackoverflow wyjątek
- 6. ABAP Short Dump na dołączonym posortowanym stole
- 7. Jak uzyskać DIFF na posortowanym zbiorze
- 8. Nazewnictwo metod java, które zwracają strumienie
- 9. Strumienie Java 8 do manipulowania ciągami znaków
- 10. Jak dodać dwa strumienie w Java 8?
- 11. Strumienie Java 8 - łączenie listy map
- 12. Strumienie Java 8 - Iterator Map and Remove na podstawie warunków
- 13. Strumienie Java: grupuj listę w mapę map
- 14. Równoległość i Flatmap w Java 8 Strumienie
- 15. Java 8 Streams: Collapse/abstrakcyjne strumienie części
- 16. SELECT DISTINCT na jednej kolumnie
- 17. Wykonywanie wyrażeń regularnych w strumieniu
- 18. Scalanie dwóch kamer internetowych przesyłanych strumieniowo w jednym strumieniu na żywo - Programowo
- 19. Jak wymienić w strumieniu za pomocą Gulp?
- 20. Uzyskaj wszystkich członków w posortowanym zestawie
- 21. Strumienie Java 8 dodające wartości z dwóch lub więcej list
- 22. Java 8 Stream.findAny() vs znajdowanie losowego elementu w strumieniu
- 23. Co to jest "operacja wyjścia z luku" w strumieniu Java?
- 24. Strumień Java. Podsumowując dwa pola w strumieniu obiektów
- 25. Strumienie Java - efektywne grupowanie elementów w posortowanych strumieniach
- 26. Java 8 strumienie: iteracyjne nad mapą of Lists
- 27. Jak grupować obiekty na liście na inne listy według atrybutów wykorzystujących strumienie i Java 8?
- 28. Filtrowanie elementów pustych w strumieniu
- 29. Linq Distinct na podstawie właściwości obiektu
- 30. SQL - "DISTINCT" na podstawie tylko niektórych kolumn?
strumieni używam są wytwarzane przez bibliotekę strony trzeciej, więc nie tworzą spliterators się w ogóle. Sądzę, że mogę * użyć * pewnego rodzaju spliteratora proxy, który może działać. – Jules
Tak, jedynym rozwiązaniem jest pakowacz, który podaje różne cechy. – Holger