Java 8 Lambda,过滤 HashMap,无法解析方法
Java 8 Lambda, filter HashMap, cannot resolve method
我对 Java 8 的新功能有点陌生。我正在学习如何按条目过滤地图。我已经查看了 this tutorial and this post 我的问题,但我无法解决。
@Test
public void testSomething() throws Exception {
HashMap<String, Integer> map = new HashMap<>();
map.put("1", 1);
map.put("2", 2);
map = map.entrySet()
.parallelStream()
.filter(e -> e.getValue()>1)
.collect(Collectors.toMap(e->e.getKey(), e->e.getValue()));
}
然而,我的 IDE (IntelliJ) 说 "Cannot resolve method 'getKey()'",因此无法编译:
这也没有帮助:
谁能帮我解决这个问题?
谢谢。
该消息具有误导性,但您的代码因其他原因无法编译:collect
returns Map<String, Integer>
而不是 HashMap
。
如果你使用
Map<String, Integer> map = new HashMap<>();
它应该按预期工作(同时确保您拥有所有相关的导入)。
您返回的是 Map 而不是 hashMap,因此您需要将 map
类型更改为 java.util.Map
。此外,您可以使用 方法引用 而不是调用 getKey、getValue。例如
Map<String, Integer> map = new HashMap<>();
map.put("1", 1);
map.put("2", 2);
map = map.entrySet()
.parallelStream()
.filter(e -> e.getValue() > 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
您也可以使用一些 intellij 帮助来解决它,例如如果你在
前面按 ctrl+alt+v
new HashMap<>();
map.put("1", 1);
map.put("2", 2);
map = map.entrySet()
.parallelStream()
.filter(e -> e.getValue() > 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
intellij创建的变量将是精确类型,你会得到。
Map<String, Integer> collect = map.entrySet()
.parallelStream()
.filter(e -> e.getValue() > 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
我对 Java 8 的新功能有点陌生。我正在学习如何按条目过滤地图。我已经查看了 this tutorial and this post 我的问题,但我无法解决。
@Test
public void testSomething() throws Exception {
HashMap<String, Integer> map = new HashMap<>();
map.put("1", 1);
map.put("2", 2);
map = map.entrySet()
.parallelStream()
.filter(e -> e.getValue()>1)
.collect(Collectors.toMap(e->e.getKey(), e->e.getValue()));
}
然而,我的 IDE (IntelliJ) 说 "Cannot resolve method 'getKey()'",因此无法编译:
这也没有帮助:
谁能帮我解决这个问题?
谢谢。
该消息具有误导性,但您的代码因其他原因无法编译:collect
returns Map<String, Integer>
而不是 HashMap
。
如果你使用
Map<String, Integer> map = new HashMap<>();
它应该按预期工作(同时确保您拥有所有相关的导入)。
您返回的是 Map 而不是 hashMap,因此您需要将 map
类型更改为 java.util.Map
。此外,您可以使用 方法引用 而不是调用 getKey、getValue。例如
Map<String, Integer> map = new HashMap<>();
map.put("1", 1);
map.put("2", 2);
map = map.entrySet()
.parallelStream()
.filter(e -> e.getValue() > 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
您也可以使用一些 intellij 帮助来解决它,例如如果你在
前面按ctrl+alt+v
new HashMap<>();
map.put("1", 1);
map.put("2", 2);
map = map.entrySet()
.parallelStream()
.filter(e -> e.getValue() > 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
intellij创建的变量将是精确类型,你会得到。
Map<String, Integer> collect = map.entrySet()
.parallelStream()
.filter(e -> e.getValue() > 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));