Ich habe eine Sammlung, die ein Feld vom Typ Set mit einigen Werten hat. Ich muss ein neues Set erstellen, das all diese Werte sammelt.Sammeln Sie alle Werte eines Feldes Set
Ich frage mich, ob dies mit Lambda-Ausdrücke möglich ist.
Unten ist der Code Zeile:
Set<String> teacherId = batches.stream()
.filter(b -> !CollectionUtils.isEmpty(b.getTeacherIds()))
.map(b -> b.getTeacherIds())
.collect(Collectors.toSet());
Das Problem ist Postkarten Betrieb, es enthält eine Sammlung von Satz Saiten. So sammeln Operation gibt eine Set<Set<String>>
zurück, aber ich freue mich, alle Werte zu einem einzigen Satz zu aggregieren.
Was ist, wenn die b.getTeacherIds eine Null ist? –
@BiscuitCoder arg, guter Punkt - Streams behandeln Nullen nicht gut. Ich werde das bearbeiten. – Mureinik
@Mureinik 'Filter (Objects :: nonNull)' wäre nicht genug. Sie würden 'stream' in' flatMap' auf einer Nullreferenz aufrufen ... – Eugene