初始化地图 例如,从地图项

问题描述 投票:11回答:5

说我有像这样一些映射条目:

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实例的地图。

java hashmap java-10
5个回答
13
投票

更换

Map.of(a,b,c); 

Map.ofEntries(a,b,c);

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

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

When to use Map.of() and when to use Map.ofEntries()


2
投票

简单的答案是:

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>,如果你想知道。


2
投票

从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建议


1
投票

用这个

var m = Map.ofEntries(a, b, c);

代替

var m = Map.of(a,b,c);

1
投票

要创建一个映射,从条目使用两种:

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());
© www.soinside.com 2019 - 2024. All rights reserved.