Angenommen set
ist ein HashSet
mit n
elements und k
ist etwas int
zwischen 0
(inklusive) und n
(exklusiv).
Kann jemand in einfachen Worten erklären, was tatsächlich passiert, wenn Sie das tun?
%Vor% Vor allem, was ist die zeitliche Komplexität davon? Bietet der Zusatz von spliterator()
zur Schnittstelle Collection
nun einen schnelleren Zugriff auf "zufällige" Elemente von Sammlungen, als dies mit Java 7 möglich gewesen wäre?
Die aktuelle Implementierung hat O (k) -Komplexität und entspricht weniger dem folgenden:
%Vor% Die aktuelle Implementierung berücksichtigt niemals das Merkmal ORDERED
für sequentielle Streams. Der Code, der in @ the8472 zitiert wird, funktioniert nur für parallele Streams. Im Parallelfall ist die amortisierte Komplexität ungefähr O (k / n), wobei n die Anzahl der Prozessoren ist.
Wie Louis anmerkt, ist skip bei unsortierten Streams nicht wirklich sinnvoll, tatsächlich ist es derzeit (jdk 1.8) so implementiert, dass die folgende Methode das Überspringen unter bestimmten Umständen optimiert:
%Vor%Dies ist gültig, weil es der Quellsammlung in einer anderen Reihenfolge einfach entspricht.
Tags und Links java java-8 collections java-stream