Ich habe ein Objekt, das wie folgt aussieht
%Vor%Ist es möglich, bei einer Liste von MyObjects Java 8-Streams zu verwenden, um sowohl den Typ als auch den Subtyp zu filtern?
Bisher habe ich
%Vor%aber ich möchte auch einen anderen Filter auf jeder der Untertypen, der auch diese auf einem bestimmten Subtyp filtert. Ich kann nicht herausfinden, wie das geht.
Ein Beispiel wäre
%Vor%Ich würde matchType B und subType Z übergeben, also würde ich ein Ergebnis erwarten - & gt; myObject Typ B, Subtypen: W, X, Z
Der folgende Befehl gibt 2 Einträge in einer Liste zurück.
%Vor%aber ich würde gerne einen zusätzlichen Filter über jeden der Subtypen hinzufügen und nur dort, wo 'Z' vorhanden ist.
Sie können:
%Vor% Dies ruft alle MyObject
Objekte ab, die
type
Mitglieds. List<String>
, die einige andere Kriterien erfüllen, dargestellt mit <predicate>
Ich habe die akzeptierte Antwort von @kocko gesehen, die sowohl eine gute als auch eine vollkommen richtige Antwort ist. Es gibt jedoch einen leicht alternativen Ansatz, bei dem Sie die Filter einfach verketten.
%Vor% Dies macht im Prinzip dasselbe, aber der Operand &&
wird zugunsten eines anderen Filters entfernt. Chaining funktioniert wirklich gut für die Java 8 Stream API: s und IMO ist es einfacher zu lesen und den Code zu folgen.