Also hier ist mein Code:Wenn ich Collectors.toMap in Java verwende, wie überspringe ich das Hinzufügen eines Eintrags zur neuen Map?
HashMap<String, List<Foo.Builder>> strFooMap = new HashMap<>();
// add stuff to strFooMap and do other things
return new HashMap<>(strFooMap.entrySet()
.stream()
.collect(Collectors.toMap(Entry::getKey,
entry -> entry
.getValue()
.stream()
.filter(builder -> {
// do some conditional stuff to filter
})
.map(builder -> {
return builder.build();
})
.collect(Collectors.toList())
)
)
);
Also manchmal, nachdem die filter
tun, dass alle Einzelteile in meinem List<Foo.Builder>
werden gefiltert wird. Dann in meinem letzten HashMap
, habe ich einen Eintrag wie folgt: {"someStr" -> []}
. Ich möchte die Schlüsselwertpaare entfernen, bei denen der Wert eine leere Liste ist. Wie würde ich das machen? Wäre es möglich, dies im Code .stream().collect(Collectors.toMap(...))
zu tun? Vielen Dank!
Bitte fügen Sie weitere Informationen, wie 'Foo.Builder' Methoden, und Ihre Rückgabetyp. Warum kopieren Sie die zurückgegebene Karte in eine andere HashMap? – shmosel
Sie würden es vor dem Sammeln "filtern"? – Tunaki