Create Map in Java

我想创建一个包含由 (int, Point2D)组成的条目的 map

我怎么用 Java 做这个?

我尝试了以下方法,但没有成功。

HashMap hm = new HashMap();


hm.put(1, new Point2D.Double(50, 50));
388220 次浏览
Map<Integer, Point2D> hm = new HashMap<Integer, Point2D>();
Map <Integer, Point2D.Double> hm = new HashMap<Integer, Point2D>();
hm.put(1, new Point2D.Double(50, 50));

甚至还有一种更好的方法来创建一个 Map 并进行初始化:

Map<String, String> rightHereMap = new HashMap<String, String>()
{
{
put("key1", "value1");
put("key2", "value2");
}
};

更多选项请看这里 如何初始化静态映射?

Java 9

public static void main(String[] args) {
Map<Integer,String> map = Map.ofEntries(entry(1,"A"), entry(2,"B"), entry(3,"C"));
}

感谢 Java9,我使用了这种 Map 填充。在我看来,这种方法为代码提供了更多的可读性。

  public static void main(String[] args) {
Map<Integer, Point2D.Double> map = Map.of(
1, new Point2D.Double(1, 1),
2, new Point2D.Double(2, 2),
3, new Point2D.Double(3, 3),
4, new Point2D.Double(4, 4));
map.entrySet().forEach(System.out::println);
}

With the newer Java versions (也就是说, Java 9 and forwards) you can use :

Map.of(1, new Point2D.Double(50, 50), 2, new Point2D.Double(100, 50), ...)

一般来说:

Map.of(Key1, Value1, Key2, Value2, KeyN, ValueN)

然而,请记住,Map.of只适用于 最多 10条目,如果您有多于 10条目,您可以使用:

Map.ofEntries(entry(1, new Point2D.Double(50, 50)), entry(2,  new Point2D.Double(100, 50)), ...);