Karte in Java erstellen


84

Ich möchte eine erstellen map, die Einträge enthält, die aus bestehen(int, Point2D)

Wie kann ich das in Java machen?

Ich habe folgendes erfolglos versucht.

HashMap hm = new HashMap();

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

Ihr hm.put sieht eher aus wie einMap<Integer, Double>
Luiggi Mendoza


1
Was meinst du nicht erfolgreich?
Texasbruce

Antworten:


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

8
Sie müssen auch tun import java.util.Map; import java.util.HashMap;oderimport java.util.*;
Max

20

Es gibt noch eine bessere Möglichkeit, eine Karte zusammen mit der Initialisierung zu erstellen:

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

Weitere Optionen finden Sie hier. Wie kann ich eine statische Karte initialisieren?


4
Dies ist ein wirklich schlechter Weg, um eine Karte zu initialisieren.
Kao

1
@ Kao Warum? Dies enthält nur visuell die Operation, ansonsten ist sie identisch mit der Top-Antwort auf diese Frage.
Anthony Mansour

5
Nein, ist es nicht. Es handelt sich um eine Doppelklammer-Initialisierung, die im Allgemeinen ein Anti-Pattern ist. Hier ist warum .
Kao

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")ist besser
ZhekaKozlov


@ZhekaKozlov Ich habe versucht, Map.of zu verwenden. Beim Ausführen des Tests wurde angegeben, dass das Symbol nicht gefunden werden konntejava: cannot find symbol symbol: method of(java.lang.String,double) location: interface java.util.Map
soMuchToLearn

@soMuchToLearn Welche Java-Version verwenden Sie? Runjava -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.Doublesieht nicht aus wie ein Point2D= \
Luiggi Mendoza

Mit Map<int, Point2D> hm = new HashMap<int, Point2D>(), bekomme ich diesen Fehler: Syntaxfehler auf Token "int", Dimensionen nach diesem Token erwartet.
Kevin Meredith

Ich habe vergessen, dass Java-Maps keine primitiven Typen unterstützen. Das wurde behoben.
Achrome

aber ich brauche Point2D als Wert im [Schlüssel, Wert]. : /
Kevin Meredith

Das habe ich ursprünglich geschrieben.
Achrome

1

Ich verwende eine solche Kartenpopulation dank Java 9. Meiner ehrlichen Meinung nach bietet dieser Ansatz eine bessere Lesbarkeit des Codes.

  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);
  }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.