说我有像这样一些映射条目:
var a = Map.entry("a", new Object());
var b = Map.entry("b", new Object());
var c = Map.entry("c", new Object());
var m = Map.of(a,b,c); // error here
我得到这个错误:
无法解析 '(java.util.Map.Entry,java.util.Map.Entry,java.util.Map.Entry)的' 方法
我只是想从一个映射项新的地图,我该怎么办呢?不是问题特别是关于如何初始化给定的Map.Entry实例的地图。
更换
Map.of(a,b,c);
同
Map.ofEntries(a,b,c);
如果你想仍然使用Map.of()
那么你应粘贴键和值明确。
Map.Entry()
返回包含给定的键和值的不可变Map.Entry
。这些条目是适于填充用Map.ofEntries()
方法地图的实例。
简单的答案是:
var a = Map.entry("a", new Object());
var b = Map.entry("b", new Object());
var c = Map.entry("c", new Object());
var m = Map.ofEntries(a,b,c); // ! use Map.ofEntries not Map.of
和Map.entry(key,val)
的类型是Map.Entry<K,V>
,如果你想知道。
从JDK-9可以使用Map.of()
创建Map
与键值对
Map<String, Object> map = Map.of("a", new Object(), "b", new Object(), "c", new Object());
并且还通过使用SimpleEntry
Map<String, Object> map = Map.ofEntries(
new AbstractMap.SimpleEntry<>("a", new Object()),
new AbstractMap.SimpleEntry<>("b", new Object()),
new AbstractMap.SimpleEntry<>("c", new Object()));
或使用Map.ofEntries
OP建议
用这个
var m = Map.ofEntries(a, b, c);
代替
var m = Map.of(a,b,c);
要创建一个映射,从条目使用两种:
var a = Map.entry("a", new Object());
var b = Map.entry("b", new Object());
var c = Map.entry("c", new Object());
var m = Map.ofEntries(a,b,c);
要么:
var m = Map.ofEntries(
entry("a", new Object()),
entry("b", new Object()),
entry("c", new Object()));
您也可以在地图没有明确创建的条目:
var m = Map.of("a", new Object(),
"b", new Object(),
"c", new Object());