In dieser Lektion werden wir einen Blick darauf werfen bei der Streaming-Unterstützung in der Java.utility-Bibliothek. Wir werden einen Blick auf das Pipelining werfen, Endpunkte, Filtern, Mapping, Gruppieren Reduzieren, Bestellen von Statistiken, und wir werden uns zum Schluss Lets ansehen. In dieser speziellen Lektion Wir werden einen Blick auf Pipeline- und Terminal-Endpunkte werfen. Wenn Sie also die Grafik hier sehen können, Wir beginnen mit einer Stream-Quelle, was alles sein kann. Typischerweise ist es ein Sammlungstyp, eine Liste, eine Karte, eine Warteschlange. Es kann ein Array oder ein IO-Kanal sein. Es kann eine Reihe von Dingen sein. Und wir bitten diese Stream-Quelle, sich zu präsentieren als Stream mit der Stream-Methode. An diesem Punkt, es gibt eine beliebige Anzahl von Zwischenoperationen die wir im Stream durchführen können. Vielleicht haben Sie schon einmal den Begriff "Map Reduce" oder "Map Transform" gehört. Es ist diese Idee. Wir können filtern, sortieren, konvertieren, zuordnen, viele verschiedene Operationen dass wir diese Zwischenoperationen als wir können auf diesem Strom durchführen. Jetzt passiert eigentlich gar nichts bis wir den Terminalbetrieb erreichen, was wir sehen werden, könnte sein, Ich hätte jetzt gerne die Sammlung als Sammlung präsentieren nachdem sie transformiert und reduziert wurden und so weiter oder vielleicht nur ein Aggregat, eine Zählung oder eine Summe oder Statistiken, wie wir sehen werden. Also das erste, was ich tun möchte, nur um hier mit der Idee anzufangen, Ich habe hier eine Sammlung was zufällig eine Liste von Früchten ist. Und Sie können sie hier sehen. Und was wir vielleicht getan haben bevor Streams der zwingende Ansatz gewesen wäre. Wir könnten die Liste durchlaufen haben. Und in diesem Fall suchen wir nach jeder Frucht das endet mit dem buchstaben e. Also Apfel, ja, Orangen, nein, Ananas, ja, und du kannst sehen. Wir könnten also sagen, wenn die Frucht mit dem Buchstaben e endet fügen Sie dann diese bestimmte Frucht der gefilterten Liste hinzu. Und dann gehen wir. Am Ende sollten wir mit Apfel, Ananas enden., und, naja, da waren zwei Äpfel drin. Wenn Sie jetzt Streams verwenden, ist es etwas deklarativer. Wir können also mit der gleichen Obstliste beginnen die wir gerade eben hatten. Und in diesem Fall werden wir die Sammlung fragen, in diesem Fall die Liste, sich uns als Stream präsentieren. An diesem Punkt können wir mit dem Schießen beginnen diese Zwischenoperationen. Und hier können Sie sehen, dass ich die Filtermethode verwenden werde. Ich werde hier den Lambda-Ausdruck verwenden, so dass ich den Stream filtern möchte nur die Früchte einzuschließen, die mit dem Buchstaben e enden. Und dann der Terminalbetreiber, den Sie hier sehen ist, alles zu sammeln, was es hier durch den Filter geschafft hat, Sammeln Sie diese zu einer Liste. Und ich empfange diese in etwas namens "filteredList". Sie können also sehen, dass meine Behauptung dieselbe ist wie zuvor, außer dass ich keine Schleifen geschrieben oder keine ifs gemacht habe oder temporäre Listen erstellen oder zur temporären Liste hinzufügen, keines davon. Ich habe gerade die Stream-Unterstützung und die deklarative Programmierung verwendet. Sie können also sehen, dass es sehr effizient war. Wir können Elemente jeder Größe im Stream verarbeiten, sehr speichereffizient. Nichts passierte, bis wir den Terminal-Endpunkt erreichten. Und ich möchte mir hier ein paar andere Ideen ansehen, eine, in der ich eine Sammlung habe das hat Hunderttausende von Punkten, Geolokalisierungen, darin. Und ich würde gerne ein paar Dinge tun. Es sieht zunächst so aus, Ich werde alle Geolokalisierungen lesen. Dieser Typ hat 30.406 Elemente drin. Was ich jetzt machen möchte ist, mit derselben Sammlung von Geolokalisierungspunkten, verwandelt es in einen Stream. Mit anderen Worten, bitten Sie es, sich mir als Strom zu präsentieren. Und dann werde ich ausstellen dieser Filter Zwischenoperator. Ich werde nur die Geolokalisierungen herausfiltern wo die Bevölkerung mehr als 50.000 war und dann in einer Liste sammeln. Sie können hier also sehen, dass die größten Populationen, Es gab nur 951 Geolokalisierungen von 30.406 die mehr als 50.000 Einwohner hatte. Nun die nächste Vorstellung hier unten, wir haben die .stream verwendet um die Sammlung in diesem Fall in einen Stream umzuwandeln. Wenn wir Hunderttausende oder Millionen haben oder zig Millionen Elemente im Stream, Wir können genauso einfach die parallelStream-Operation verwenden. Und was das tut, ist, dass es ausgeht Um zu sehen, wie viele Kerne Sie haben, Wie viele Prozessoren auf der Maschine, und es wird unter dem Teppich schaffen so viele Threads wie Kerne auf Ihrer Plattform vorhanden sind. Und was es dann tut, ist Fork/Join oder so ähnlich so dass es ausgehen und bestimmen kann Wie viele Populationen haben mehr als 50.000 Einwohner? Verwenden Sie so viele Threads, wie Sie Kerne auf Ihrem Computer haben. So ermöglicht es sehr einfache parallele Berechnungen ohne sich um Multithreading kümmern zu müssen und all diese Dinge selbst zu tun. Und das Letzte, was ich dir zeigen werde, Ich fand das interessant. Wenn du mal reinschnuppern möchtest, um zu sehen, wie es aussieht an verschiedenen Stellen entlang Ihrer Pipeline, Sie haben uns eine Peek-Methode gegeben. Nun, das einzige, was ich darüber verstehen kann haben sie das hier für Entwickler eingefügt. Also werde ich hier meinen Fruchtstrom herausfiltern, jene Früchte, die mit dem Kleinbuchstaben e enden und dann erwartet der Peek, dass Sie ihm einen Verbraucher übergeben. Mein Konsument ist also Ich werde die Elemente konsumieren der es durch diesen Teil des Filters geschafft hat, durch diesen Teil der Pipeline und drucken Sie es aus. Und dann werde ich kartieren, welche Frucht es gemacht hat durch diesen Filter zum Namen der Frucht alles in Großbuchstaben. Und Sie können sehen, dass wir diese Peek-Operationen dort einfügen können an beliebig vielen Stellen entlang der Pipeline. Und dann sammle ich sie schließlich in einer Liste und du kannst sehen, was ich haben sollte im Endergebnis ist APFEL, ANANAS und wieder APFEL alles in Großbuchstaben, weil es gefiltert wurde und es wurde transformiert oder auf die Großbuchstabenversion abgebildet. Also ich weiß es zu schätzen, dass du zusiehst. Ich danke Ihnen sehr.