Arrays.asList也适用于地图?

Pow*_*wer 13 java dictionary list

我有以下代码:

Map<String, Map<Double, String>> map = new HashMap<>();
Map<Double,String> Amap = new HashMap<>();
map.put(getValuesTypes.FUT(), HERE);
Run Code Online (Sandbox Code Playgroud)

而不是首先创建一个Map并将其放在"HERE",我正在寻找一个像我可以在List那里使用的功能,这样我就Arrays.asList(...) 可以进入"Here" ?.asMap({1.0,"A"}, {2.0,"B"})

小智 12

你可以HashMap像这样初始化.

new HashMap<Double, String>() {
    {
        put(1.0, "ValA");
        put(2.0, "ValB");
    }
};
Run Code Online (Sandbox Code Playgroud)

  • 敬畏它具有创建额外地图实例的隐藏成本。这称为双括号初始化。 (4认同)
  • 使用 Java 9,您可以简单地执行 `new HashMap&lt;Double, String&gt;(Map.of( 1.0, "A", 2.0, "B" ));` (4认同)

Jir*_*ser 7

番石榴

Map<Double, String> map = ImmutableMap.of(1.0, "A", 2.0, "B");
Run Code Online (Sandbox Code Playgroud)


Oli*_*POP 5

Guava 的ImmutableMap.of(..)可以在这个方向上提供帮助:

ImmutableMap.of(1, "a");
Run Code Online (Sandbox Code Playgroud)

在 JDK 中只有Collections.singletonMap(..),但这仅为您提供了一个带有唯一对的地图。

番石榴项目中有一个包含一个的讨论,它被停止了。所以, ImmutableMap.of(...) 是要走的路。Maps.asMap(Object... varArgs)

自 JDK 9 起编辑

在 JDK 9 中添加了执行相同操作的新方法: Map.of(K,V)