Maak een kaart in Java

Ik wil graag een mapmaken die items bevat die bestaan uit (int, Point2D)

Hoe kan ik dit in Java doen?

Ik heb het volgende zonder succes geprobeerd.

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

Antwoord 1, autoriteit 100%

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

Antwoord 2, autoriteit 19%

Java 9

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

Antwoord 3, autoriteit 17%

Er is zelfs een betere manier om samen met initialisatie een kaart te maken:

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

Kijk hier voor meer opties Hoe kan ik een statische kaart initialiseren?


Antwoord 4, autoriteit 7%

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

Antwoord 5, autoriteit 5%

Met de nieuwere Java-versies (d.w.z.Java 9 en hoger) kunt u het volgende gebruiken:

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

algemeen:

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

Houd er echter rekening mee dat Map.ofalleen werkt voor maximaal10inzendingen, als je meer dan 10items die u kunt gebruiken :

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

Antwoord 6, autoriteit 2%

Ik gebruik zo’n soort kaartpopulatie dankzij Java 9. Naar mijn eerlijke mening zorgt deze aanpak voor meer leesbaarheid van de code.

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

Other episodes