Ich habe eine Karte, muss auf jeden Wert des Eintrags arbeiten und die modifizierte Karte zurückgeben. Ich habe es geschafft zu arbeiten, aber die resultierende Karte enthält Einträge mit leeren Wert, und ich möchte diese Einträge entfernen, kann aber nicht mit Java 8 Stream-API.Java 8 Stream API Filter leerer Wert aus Karte
hier ist mein ursprünglicher Code:
Map<String, List<Test>> filtered = Maps.newHashMap();
for (String userId : userTests.keySet()) {
List<Test> tests = userTests.get(userId);
List<Test> filteredTests = filterByType(tests, supportedTypes);
if (!CollectionUtils.isEmpty(filteredTests)) {
filtered.put(userId, filteredTests);
}
}
return filtered;
und hier ist mein Java 8 Stream API-Version:
userTests.entrySet().stream()
.forEach(entry -> entry.setValue(filterByType(entry.getValue(), supportedTypes)));
userTests.entrySet().stream().filter(entry -> !entry.getValue().isEmpty());
return userTests;
- Wie kann ich Einträge mit leeren/null Wert von der Karte entfernen?
- gibt es bessere Möglichkeit, den Code in Stream-API zu schreiben, die ich bisher nicht sehen, es ist besser als mein ursprünglicher Code
Wo ist die Definition der 'filterByType'? – Dimitri