用Java创建地图


84

我想创建一个map包含以下项的条目(int, Point2D)

如何用Java做到这一点?

我尝试了以下失败。

HashMap hm = new HashMap();

hm.put(1, new Point2D.Double(50, 50));

您的hm.put看起来更像是Map<Integer, Double>
Mendoza


1
你是什​​么意思不成功?
texasbruce 2014年

Answers:


115
Map <Integer, Point2D.Double> hm = new HashMap<Integer, Point2D>();
hm.put(1, new Point2D.Double(50, 50));

8
您还必须执行以下操作import java.util.Map; import java.util.HashMap;import java.util.*;
最多

19

还有一种更好的方法来创建带有初始化的Map:

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

有关更多选项,请看这里。如何初始化静态地图?


4
这是初始化地图的一种非常糟糕的方法。
花王

1
@Kao为什么?这只是视觉上包含的操作,否则与该问题的最高答案相同。
Anthony Mansour

5
不,这不对。这是双括号初始化,通常来说是反模式。这就是为什么
花王

18

Java 9

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

8
Map.of(1, "A", 2, "B", 3, "C")更好
ZhekaKozlov


@ZhekaKozlov我尝试使用Map.of,在运行测试时说找不到该符号java: cannot find symbol symbol: method of(java.lang.String,double) location: interface java.util.Map
soMuchToLearn

@soMuchToLearn您使用什么版本的Java?跑步java -version
ZhekaKozlov

java 11,@ZhekaKozlovopenjdk 11.0.8 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
soMuchToLearn

9
Map<Integer, Point2D> hm = new HashMap<Integer, Point2D>();

Point2D.Double看起来不像是Point2D= \
Luiggi Mendoza

使用时Map<int, Point2D> hm = new HashMap<int, Point2D>(),出现以下错误:令牌“ int”的语法错误,此令牌后需要尺寸。
凯文·梅雷迪斯

忘记了Java映射不支持基本类型。固定的。
Achrome

但是我需要Point2D作为[键,值]中的值。:/
Kevin Meredith

那是我最初写的。
Achrome

1

由于Java 9,我使用了这种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);
  }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.