Karte in Java erstellen

Lesezeit: 3 Minuten

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

Benutzer-Avatar
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)), ...);

Benutzer-Avatar
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

Benutzer-Avatar
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

1300420cookie-checkKarte in Java erstellen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy