Wie in this question diskutiert, ist die Implementierung von distinct()
in der Lage, einen effizienteren Algorithmus zu verwenden, wenn der Stream, auf dem er ausgeführt wird, bekannt ist, dass die Laufzeit sortiert wird. Wie können wir ein ähnliches Ergebnis erzielen, wenn wir wissen, dass der Stream sortiert ist (z. B. weil er aus einer extern vorsortierten Datenquelle stammt, z. B. eine SQL-Abfrage mit einer order by
-Klausel), aber nicht als solcher gekennzeichnet ist? Es gibt eine unordered()
Operation, die die Ordering-Flags entfernt, aber soweit ich sehen kann, gibt es keine Möglichkeit, dem System mitzuteilen, dass die Daten extern bestellt wurden.Java Streams: distinct() auf einem vorsortierten Stream?
7
A
Antwort
3
Sie könnten Ihren spliterator um eine bestehende Sammlung zum Beispiel erstellen:
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
Verwandte Themen
- 1. Java8 Streams - Duplikate entfernen Mit Stream-Distinct
- 2. Java 8 Streams verschmelzen inner Stream-Ergebnis zu Stream über
- 3. RxJS: Entprellen eines Streams nur wenn distinct
- 4. Java 8 - distinct im Stream von Strings - IllegalStateException
- 5. Java 8 Streams: Summenwert auf einem deutlichen Schlüssel
- 6. Java-Streams bilden ein Kartenproblem
- 7. Java-Ausnahmebehandlung und Streams
- 8. Verwendung von printf in einem Stream in Java
- 9. Java 8 Streams, Lambdas
- 10. Wie kann ich einen Stream von Streams in Java abbilden?
- 11. Java 8's Streams: Warum ist der parallele Stream langsamer?
- 12. Java Stream Collectors in groovy Fehler auf Set :: Größe
- 13. Operationen zwischen Java-Streams
- 14. MinMaxPriorityQueue mit Java-Streams
- 15. Java-Stream "forEach", aber keinen Stream verbrauchen
- 16. Java - Zuordnung Stream Variablenzuweisung
- 17. .collect (Collectors.toList()) und Streams auf Java-Methode
- 18. Kartesisches Produkt von Streams in Java 8 als Stream (nur Streams)
- 19. Java Streams: Welche Operationen erhalten, um
- 20. Java 8 Stream - Bezug auf Original-Stream-Objekt nach Flatmap
- 21. Java 8 streams und varargs
- 22. Java 8 Streams: Zählwerte
- 23. Java Iteratoren und Streams
- 24. Java 8-Stream in Stream-Parallelität
- 25. Java-Streams in Clojure konsumieren
- 26. Java 8-Streams - Stackoverflow Ausnahme
- 27. MySQL DISTINCT auf einem GROUP_CONCAT()
- 28. IllegalStateException, die nach einem einzelnen Aufruf des Java-Streams auftritt
- 29. Java Streams begrenzen die Sammlungselemente basierend auf der Bedingung
- 30. Verschmelzbare Node-Streams in einen Stream verschmelzen
Die Ströme Ich verwende werden von einer Dritten Bibliothek erzeugt, so dass ich nicht schaffen spliterators mich alle an. Ich glaube, ich könnte * eine Art Proxy-Spliterator verwenden, der funktionieren könnte. – Jules
Ja, ein Wrapping-Spliterator, der verschiedene Eigenschaften meldet, scheint die einzige Lösung zu sein. – Holger