Java -Stream -Filter

Java -Stream -Filter
Ein Beispiel für einen Strom ist: Bleistift, Tinte, üblich, Menschen, Katze. Kuchen, Forstwirtschaft

Wenn dieser Stream gefiltert werden soll, um nur ein Ergebnis von Wörtern zu haben, deren Länge mehr als fünf Zeichen beträgt, wäre das Ergebnis:

Bleistift, üblich, Menschen, Forstwirtschaft

Ein weiteres Beispiel eines Streams ist:

Hund, Fledermaus, Null, Feld, Land, Null, Überlagerung

Wenn dieser Stream so gefiltert werden soll, dass Nullwerte nicht vorhanden sind, wäre das Ergebnis:

Hund, Fledermaus, Feld, Land, Überlagerung

Ein weiteres Beispiel eines Streams ist:

1, 2, 3, 4, 5, 6, 7, 8

Wenn dieser Stream so gefiltert werden soll, dass das Ergebnis keine Zahl hat, die weniger als oder gleich 5 ist, wäre das Ergebnis:

6, 7, 8

Ein Stream ist eine Abfolge von Elementen. Die Quelle des Streams kann ein Array, eine Sammlung oder Eingabe von der Festplatte oder eines Netzwerks sein. Wenn Sie einen Strom filtern, werden bestimmte Elemente auf der Grundlage einiger Kriterien beseitigt. Solche Kriterien, wenn sie codiert werden, ist eine Funktion und wird als Prädikat bezeichnet.

Artikelinhalt

  • Prädikat
  • Einige Strom produzierende Strukturen
  • Die filter () Methode
  • Abschluss

Prädikat

Ein Prädikat ist eine Funktion, die zu True oder False führt. Für den Stream,

Bleistift, Tinte, üblich, Menschen, Katze, Kuchen, Forstwirtschaft

Das Filterprädikat hat nur Wörter, deren Länge größer als 5 ist, kann sein:

Wort -> Wort.Länge ()> 5

Wort ist eine Dummy -Variable und repräsentiert jedes Wort im Stream. Eine Funktion wie diese mit dem Pfeil -> wird als Lambda -Ausdruck bezeichnet. Diese Funktion wird als Wörter interpretiert, deren Längen jeweils größer als 5 sind. Die Längenmethode einer String -Klasse gibt die Länge der Zeichenfolge zurück.

Die Wörter werden einzeln gelesen, und für jeden Fall würde der gesamte Ausdruck (von „Wort“ bis 5), wenn die Länge des Wortes größer als 5 ist, zu wahren; Andernfalls würde der gesamte Ausdruck zu Falsch führen.

Für den Stream,

Hund, Fledermaus, Null, Feld, Land, Null, Überlagerung

Das Filterprädikat für Nicht-Null-Wörter kann sein:

Wort -> Wort != NULL

Dieser Ausdruck bedeutet, dass das angesprochene Wort nicht null ist.

Für den Strom der Ganzzahlen,

1, 2, 3, 4, 5, 6, 7, 8

Das Filterprädikat, um keine Zahl zu haben, die weniger als oder gleich 5 ist, ist:

Nummer -> Nummer> = 6

wo sich die Nummer auf jede Zahl bezieht (im Gegenzug). Dies bedeutet, dass eine gewählte Zahl größer oder gleich 6 sein sollte.

Bei der Filterelemente eines Streams ist es nicht nur die Prädikat -Codierung, die der Programmierer wissen muss. Der Programmierer muss auch wissen, welche Strukturen einen Stream erzeugen und wie ein Stream erzeugt wird. Array oder Sammlung ist eine Quelle eines Streams. Vergessen Sie nicht, dass Computereingangs-/Ausgabeberationen auch einen Stream erzeugen können. Dieser Artikel geht jedoch nicht an diesem Artikel.

Einige Strom produzierende Strukturen

Array

Arrays sind eine Klasse, die Arrays verarbeiten soll. Die Methoden der Arrays nehmen ein tatsächliches Array als eines seiner Argumente an. Arrays als Klasse haben die folgende Methode:

Öffentliche statische Aufführen ASLIST (t… a)

Dies ist eine statische Methode, was bedeutet, dass das Arrays -Objekt nicht instanziiert ist. Diese Methode gibt eine Liste zurück. Die Liste kann als ungefütterte oder gefilterte Stream angesehen werden, aber es ist kein wahrer Stream. In der folgenden Erklärung ist LST beispielsweise aus einer rohen Quelle von ganzen Zahlen wie ein nicht veriltter Stream:

Aufführen LST = Arrays.ASLIST (1, 2, 3, 4, 5, 6, 7, 8);

Das Listenobjekt hat eine Methode, um einen ungefilterten Stream mit denselben Listenelementen zu erstellen, jedoch als Stream - siehe unten.

Sammlung

Beispiele für Sammlungen sind ArrayList und Vector. Die Liste selbst ist eine allgemeine Sammlung.

Anordnungsliste

ArrayList hat als Klasse die folgende Methode:

Standardstream Strom()

Diese Methode gibt ein Stream -Objekt zurück. Das folgende Codesegment zeigt dies:

Anordnungsliste AL = NeuarrayList();
al.add ("Hund"); al.add ("BAT"); al.add (null); al.Feld hinzufügen");
al.add ("Land"); al.add (null); al.add ("Überlagerung");
Strom stre = al.Strom();

Stre ist ein ungefilterter Strom.

Aufführen

Die Liste ist eigentlich eine Schnittstelle; Es ist keine Klasse. Sein Objekt kann jedoch nach der statischen Arrays -Methode aslist () zurückgegeben werden, wie oben gezeigt. Das Listenobjekt hat die Stream () -Methode, die genau wie das des ArrayList -Objekts ähnelt. Das folgende Codesegment zeigt, wie das Listenobjekt einen Stream zurückgeben kann:

Vektor vtr = neuer Vektor();
vtr.add ("Bleistift"); vtr.add ("tinte"); vtr.add ("üblich"); vtr.Leute hinzufügen");
vtr.add ("kat"); vtr.add ("Kuchen"); vtr.add ("Forstwirtschaft");
Aufführen lst = vtr.Sublist (0, vtr.Größe());
Strom stre = lst.Strom();

Das Listenobjekt hier wird von der untermischten () -Methode des Vektors zurückgegeben.

Hinweis: Die Arrays -Klasse, die ArrayList -Klasse, die Vektorklasse und die Listenschnittstelle befinden sich in der Java.Util.* Paket, das importiert werden sollte. Die Stream -Schnittstelle befindet sich jedoch in der Java.Util.Strom.* Paket (Kleinbuchstabe '), das ebenfalls importiert werden sollte.

Die filter () Methode

Eine ArrayList oder ein Listenobjekt kann also einen Stream mit ihren Stream () -Methoden erstellen. Was kann ein Listenobjekt erstellen? Die Arrays -Klasse und die Vektorklasse können jeweils ein Listenobjekt erstellen. Die Arrays -Klasse verwendet ihre ASList () -Methode, und die Vektorklasse verwendet ihre Sublist () -Methode.

Der Stream ist eine Schnittstelle und keine Klasse. Das Stream -Objekt wird von der Stream -Methode des Listenobjekts oder des ArrayList -Objekts zurückgegeben. Das Stream -Objekt hat die Filter () -Methode zum Filtern. Sein Argument ist das Prädikat. Der von der Filtermethode zurückgegebene neue Stream ist der gefilterte Stream.

Das Stream -Objekt hat viele Methoden. Zwei von ihnen sind: count () und foreach (). Die Methode count () gibt die Anzahl der Elemente im Stream zurück, und mit der Methode foreach () wird zum Scannen der Stream -Elemente verwendet.

Das Java -Programm sollte mit:

Java importieren.Util.*;
Java importieren.Util.Strom.*;

Filterung für Saiten größer als eine Länge

Der folgende Code zeigt, wie das geht:

Vektor vtr = neuer Vektor();
vtr.add ("Bleistift"); vtr.add ("tinte"); vtr.add ("üblich"); vtr.Leute hinzufügen");
vtr.add ("kat"); vtr.add ("Kuchen"); vtr.add ("Forstwirtschaft");
Aufführen lst = vtr.Sublist (0, vtr.Größe());
Strom stre = lst.Strom();
Strom Strea = Stre.Filter (Wort -> Wort.Länge ()> 5);
Strea.foreach (Element -> System.aus.print (Element + ""));
System.aus.println ();

Die foreach () -Methode hat eine Lambda -Funktion ergriffen, von der dies diesmal kein Prädikat ist. Die gefilterte Ausgabe ist:

Bleistift übliche Menschen Forstwirtschaft

Nullwerte abfiltern

Der folgende Code zeigt, wie er erledigt werden kann:

Anordnungsliste AL = NeuarrayList();
al.add ("Hund"); al.add ("BAT"); al.add (null); al.Feld hinzufügen");
al.add ("Land"); al.add (null); al.add ("Überlagerung");
Strom stre = al.Strom();
Strom Strea = Stre.Filter (Wort -> Wort != null);
Strea.foreach (Element -> System.aus.print (Element + ""));
System.aus.println ();

Die Ausgabe ist:

Hundefledermaus -Feldland Superposition

Filterung für größere Ganzzahlen

Der folgende Code zeigt dies:

Aufführen LST = Arrays.ASLIST (1, 2, 3, 4, 5, 6, 7, 8);
Strom stre = lst.Strom();
Strom Strea = Stre.Filter (Nummer -> Nummer> = 6);
Strea.foreach (Element -> System.aus.print (Element + ""));
System.aus.println ();

Die Ausgabe ist:

6 7 8

Abschluss

Die Arrays -Klasse kann ein Listenobjekt mit seiner ASList () -Methode erstellen. Die Vektorklasse kann ein Listenobjekt mit ihrer untermischten () -Methode erstellen. Die Liste und die ArrayList -Objekte haben jeweils die Stream () -Methode. Die Stream -Methode gibt den ungefilterten Stream zurück. Das zurückgegebene Stream -Objekt hat die Filter () -Methode, die ein Prädikat angeht (Kriterien für die Filterung). Die Filtermethode gibt den gefilterten Stream zurück.