Map<String, Map<String, Object>> orgMap = JSONObject.parseObject(builder.toString()) .getJSONArray("data").toJavaList(Map.class).stream() .map(map -> new AbstractMap.SimpleEntry<String, Map<String, Object>>((String) map.get("orgId"), map)) .collect( Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue) );这个代码报错了,java: 不兼容的类型: 无法推断类型变量 T,K,U (参数不匹配; 方法引用无效 无法将 接口 java.util.Map.Entry<K,V>中的 方法 getKey应用到给定类型 需要: 没有参数 找到: java.lang.Object 原因: 实际参数列表和形式参数列表长度不同) 该怎么改呢?
时间: 2024-03-20 14:41:44 浏览: 212
map.toString()后转换成Map类型
4星 · 用户满意度95%
这个错误是因为在使用方法引用时,编译器无法推断出方法的参数类型。你需要指定方法的参数类型来解决这个错误。在这个例子中,你可以将 `.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))` 修改为 `.collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()))` 来解决这个问题。
修改后的代码如下:
```
Map<String, Map<String, Object>> orgMap = JSONObject.parseObject(builder.toString())
.getJSONArray("data").toJavaList(Map.class).stream()
.map(map -> new AbstractMap.SimpleEntry<String, Map<String, Object>>((String) map.get("orgId"), map))
.collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
```
这样就可以正常编译运行了。
阅读全文