Utwórz mapę w Javie


85

Chciałbym utworzyć, mapktóry zawiera wpisy składające się z(int, Point2D)

Jak mogę to zrobić w Javie?

Bezskutecznie próbowałem wykonać następujące czynności.

HashMap hm = new HashMap();

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

Odpowiedzi:


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

8
Musisz także zrobić import java.util.Map; import java.util.HashMap;lubimport java.util.*;
Max

21

Istnieje nawet lepszy sposób tworzenia mapy wraz z inicjalizacją:

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

Aby uzyskać więcej opcji, zajrzyj tutaj. Jak mogę zainicjować statyczną mapę?


4
To naprawdę zły sposób na zainicjowanie mapy.
Kao

1
@Kao Dlaczego? To tylko wizualnie zawiera operację, w przeciwnym razie jest identyczna z pierwszą odpowiedzią na to pytanie.
Anthony Mansour,

5
Nie, nie jest. Jest to inicjalizacja z podwójnym nawiasem klamrowym, która ogólnie rzecz biorąc jest anty-wzorcem. Oto dlaczego .
Kao

19

Java 9

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

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

Point2D.Doublenie wygląda jak a Point2D= \
Luiggi Mendoza,

używając Map<int, Point2D> hm = new HashMap<int, Point2D>(), otrzymuję ten błąd: błąd składni na tokenie „int”, wymiary oczekiwane po tym tokenie.
Kevin Meredith

Zapomniałem, że mapy Java nie obsługują typów pierwotnych. Naprawiono to.
Achrome,

ale potrzebuję Point2D jako wartość w [klucz, wartość]. : /
Kevin Meredith,

Tak napisałem na początku.
Achrome,

1

Używam tego rodzaju populacji Map dzięki Javie 9. Szczerze mówiąc, takie podejście zapewnia większą czytelność kodu.

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

1

W nowszych wersjach Java ( tj. Java 9 i nowszych wersjach ) można używać:

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

ogólnie:

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

Pamiętaj jednak, że Map.ofdziała to tylko dla większości 10 wpisów, jeśli masz więcej niż 10wpisów, których możesz użyć:

Map.ofEntries(entry(1, new Point2D.Double(50, 50)), entry(2,  new Point2D.Double(100, 50)), ...);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.