Java 8 Stream-Filterwert der Liste in einer Liste

7

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.

    
Simon Kent 07.01.2015, 15:25
quelle

2 Antworten

10

Sie können:

%Vor%

Dies ruft alle MyObject Objekte ab, die

sind
  • erfüllt ein Kriterium bezüglich des type Mitglieds.
  • enthält Objekte in der verschachtelten List<String> , die einige andere Kriterien erfüllen, dargestellt mit <predicate>
Konstantin Yovkov 07.01.2015, 15:32
quelle
8

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.

    
wassgren 07.01.2015 17:07
quelle

Tags und Links