我有以下代码
Map<String, List<String>> map= new HashMap<>();
map.put("a", Arrays.asList("a1"));
map.put("b", Arrays.asList("a2"));
List<String> result = new ArrayList<>();
List<String> list = new ArrayList<>();
list.add("a");
list.add("c");
for (String names : list) {
if (!map.containsKey(names)) {
result.add(names);
}
}
然后我尝试将它迁移到 Java 8。我做错了什么?
list.stream()
.filter(c -> !map.containsKey(Name))
.forEach(c -> result.add(c));
但是我的条件没有评估
最佳答案
首先应该是:
list.stream()
.filter(c-> !map.containsKey(c))
.forEach(c->result.add(c));
其次,当您想要生成List
时,最好使用collect
作为终端Stream
操作:
List<String> result =
list.stream()
.filter(c-> !map.containsKey(c))
.collect(Collectors.toList());
关于java - 将 foreach 转换为 Java 8 过滤流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50212667/