作者:一个人的生活啦 | 来源:互联网 | 2023-01-07 17:25
我正进入(状态
Cannot infer type arguments for java.util.HashMap<>
对于以下代码
class Test {
public static void main(String[] args) {
Map map = new HashMap<>();
map.put(1, "x");
map.put(2, "y");
map.put(3, "x");
map.put(4, "z");
//the following line has error
Map> reverseMap = new java.util.HashMap<>(map.entrySet().stream()
.collect(Collectors.groupingBy(Map.Entry::getValue)).values().stream()
.collect(Collectors.toMap(item -> item.get(0).getValue(),
item -> new ArrayList<>(item.stream().map(Map.Entry::getKey).collect(Collectors.toList()))));
System.out.println(reverseMap);
}
}
出了什么问题,谁能解释一下这个?我检查了正确的导入,发现我正在导入java.util.hashmap而不是其他.仍然令人讨厌的错误正在惹恼我.
1> Eugene..:
这是ecj
(eclipse编译器)中的一个错误,您可以解决它并添加更多类型信息:
item -> new ArrayList(item.stream().map(Entry::getKey)
看看我是如何添加的ArrayList
.
它编译得很好javac-8 and 9
.
顺便说一句,似乎有一种更简单的方法:
map.entrySet()
.stream()
.collect(Collectors.groupingBy(
Entry::getValue,
HashMap::new,
Collectors.mapping(Entry::getKey, Collectors.toList())));