Ich möchte eine erstellen map
das enthält Einträge bestehend aus (int, Point2D)
Wie kann ich das in Java machen?
Folgendes habe ich erfolglos versucht.
HashMap hm = new HashMap();
hm.put(1, new Point2D.Double(50, 50));
Ich möchte eine erstellen map
das enthält Einträge bestehend aus (int, Point2D)
Wie kann ich das in Java machen?
Folgendes habe ich erfolglos versucht.
HashMap hm = new HashMap();
hm.put(1, new Point2D.Double(50, 50));
Map <Integer, Point2D.Double> hm = new HashMap<Integer, Point2D>();
hm.put(1, new Point2D.Double(50, 50));
Sie müssen auch tun import java.util.Map; import java.util.HashMap;
oder import java.util.*;
– max
6. April 2017 um 16:49 Uhr
Sie können wählen, das zweite Paar von Klassennamen zu vermeiden, dh Map <Integer, Point2D.Double> hm = new HashMap<>();
– joedavid
7. Juli um 13:48 Uhr
Es gibt sogar einen besseren Weg, 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?
Das ist wirklich Schlecht Möglichkeit, eine Karte zu initialisieren.
– Kao
4. März 2019 um 7:51 Uhr
@Kao Warum? Dies enthält nur visuell die Operation, ansonsten ist sie identisch mit der obersten Antwort auf diese Frage.
– Anthony Mansur
14. Juni 2019 um 13:30 Uhr
Nein, ist es nicht. Es ist eine Initialisierung mit zwei geschweiften Klammern, die im Allgemeinen ein Anti-Pattern ist. Hier ist der Grund.
– Kao
17. Juni 2019 um 9:31 Uhr
Es ist ein seltsamer Code, da stimme ich zu.
– Igor Kansyn
11. November 2021 um 21:43 Uhr
Java 9
public static void main(String[] args) {
Map<Integer,String> map = Map.ofEntries(entry(1,"A"), entry(2,"B"), entry(3,"C"));
}
Traumkrach
Mit den neueren Java-Versionen (dh, Java 9 und höher) können Sie verwenden:
Map.of(1, new Point2D.Double(50, 50), 2, new Point2D.Double(100, 50), ...)
allgemein:
Map.of(Key1, Value1, Key2, Value2, KeyN, ValueN)
Bedenke das aber Map.of
funktioniert nur für maximal 10
Einträge, wenn Sie mehr als haben 10
Einträge, die Sie verwenden können:
Map.ofEntries(entry(1, new Point2D.Double(50, 50)), entry(2, new Point2D.Double(100, 50)), ...);
Achrom
Map<Integer, Point2D> hm = new HashMap<Integer, Point2D>();
Point2D.Double
sieht nicht aus wie ein Point2D
=\
– Luiggi Mendoza
7. Februar 2013 um 4:26 Uhr
verwenden Map<int, Point2D> hm = new HashMap<int, Point2D>()
erhalte ich diesen Fehler: Syntaxfehler bei Token “int”, Dimensionen nach diesem Token erwartet.
– Kevin Meredith
7. Februar 2013 um 4:28 Uhr
Ich habe vergessen, dass Java-Maps keine primitiven Typen unterstützen. Das wurde behoben.
– Achrom
7. Februar 2013 um 4:29 Uhr
aber ich brauche Point2D als Wert in der [key, value]. :/
– Kevin Meredith
7. Februar 2013 um 4:35 Uhr
Das hatte ich anfangs geschrieben.
– Achrom
7. Februar 2013 um 4:36 Uhr
f.khantsis
Ich verwende eine solche Map-Population dank Java 9. Meiner ehrlichen Meinung nach sorgt dieser Ansatz für mehr 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);
}
Point2D.Double
sieht nicht aus wie ein Point2D
=\
– Luiggi Mendoza
7. Februar 2013 um 4:26 Uhr
verwenden Map<int, Point2D> hm = new HashMap<int, Point2D>()
erhalte ich diesen Fehler: Syntaxfehler bei Token “int”, Dimensionen nach diesem Token erwartet.
– Kevin Meredith
7. Februar 2013 um 4:28 Uhr
Ich habe vergessen, dass Java-Maps keine primitiven Typen unterstützen. Das wurde behoben.
– Achrom
7. Februar 2013 um 4:29 Uhr
aber ich brauche Point2D als Wert in der [key, value]. :/
– Kevin Meredith
7. Februar 2013 um 4:35 Uhr
Das hatte ich anfangs geschrieben.
– Achrom
7. Februar 2013 um 4:36 Uhr