繁体   English   中英

初始化地图 <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

我收到此错误:

无法解析方法'(java.util.Map.Entry,java.util.Map.Entry,java.util.Map.Entry)'

我只是想从地图中的条目创建一个新的地图,我该怎么做? 问题不在于如何在给定Map.Entry实例的情况下初始化Map。

更换

Map.of(a,b,c); 

Map.ofEntries(a,b,c);

如果你仍想使用Map.of()那么你应该明确地粘贴键和值。

Map.Entry()返回包含给定键和值的不可变Map.Entry 这些条目适合使用Map.ofEntries()方法填充Map实例。

何时使用Map.of()以及何时使用Map.ofEntries()

从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> ,以防你想知道。

用这个

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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM