从 Map 条目初始化 Map<String, Object> 实例
Initialize Map<String, Object> instance from Map entries
假设我有一些像这样的地图条目:
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
我收到这个错误:
Cannot resolve method
'of(java.util.Map.Entry,
java.util.Map.Entry,
java.util.Map.Entry)'
我只想从地图中的条目创建一个新地图,我该怎么做?
问题不在于如何在给定 Map.Entry 个实例的情况下初始化 Map。
从 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 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>
。
替换
Map.of(a,b,c);
和
Map.ofEntries(a,b,c);
如果您仍想使用 Map.of()
,则应明确粘贴键和值。
Map.Entry()
returns an immutable Map.Entry
containing the given
key and value. These entries are suitable for populating Map instances
using the Map.ofEntries()
method.
使用这个
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());
假设我有一些像这样的地图条目:
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
我收到这个错误:
Cannot resolve method 'of(java.util.Map.Entry, java.util.Map.Entry, java.util.Map.Entry)'
我只想从地图中的条目创建一个新地图,我该怎么做? 问题不在于如何在给定 Map.Entry 个实例的情况下初始化 Map。
从 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 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>
。
替换
Map.of(a,b,c);
和
Map.ofEntries(a,b,c);
如果您仍想使用 Map.of()
,则应明确粘贴键和值。
Map.Entry()
returns an immutableMap.Entry
containing the given key and value. These entries are suitable for populating Map instances using theMap.ofEntries()
method.
使用这个
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());