【发布时间】:2017-11-18 00:47:32
【问题描述】:
我有一个地图,需要对每个条目的值进行操作,并返回修改后的地图。我设法让它工作,但结果映射包含具有空值的条目,我想删除这些条目但不能使用 Java 8 流 API。
这是我的原始代码:
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;
这是我的 Java 8 流 API 版本:
userTests.entrySet().stream()
.forEach(entry -> entry.setValue(filterByType(entry.getValue(), supportedTypes)));
userTests.entrySet().stream().filter(entry -> !entry.getValue().isEmpty());
return userTests;
- 如何从地图中删除具有空/空值的条目?
- 有没有更好的方法在流 API 中编写代码,到目前为止我认为它没有比我的原始代码更好
【问题讨论】:
-
filterByType方法的定义在哪里?
标签: java java-stream