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));
Kevin Meredith
quelle
Ihr hm.put sieht eher aus wie einMap<Integer, Double>
Luiggi Mendoza
Überprüfen Sie diesen Link stanford.edu/group/coursework/docsTech/jgl/api/…
Meherzad
1
Was meinst du nicht erfolgreich?
Texasbruce
Werfen
Lu55

Antworten:

117
Map <Integer, Point2D.Double> hm = new HashMap<Integer, Point2D>();
hm.put(1, new Point2D.Double(50, 50));
hd1
quelle
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?

webdizz
quelle
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"));
}
Durgpal Singh
quelle
8
Map.of(1, "A", 2, "B", 3, "C")ist besser
ZhekaKozlov
Sieh dir das an. stackoverflow.com/questions/46601959/…
Durgpal Singh
@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>();
Achrome
quelle
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);
  }
Julian Kolodzey
quelle