Chciałbym utworzyć, map
któ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));
Chciałbym utworzyć, map
któ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:
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ę?
Java 9
public static void main(String[] args) {
Map<Integer,String> map = Map.ofEntries(entry(1,"A"), entry(2,"B"), entry(3,"C"));
}
Map<Integer, Point2D> hm = new HashMap<Integer, Point2D>();
Point2D.Double
nie wygląda jak a Point2D
= \
Map<int, Point2D> hm = new HashMap<int, Point2D>()
, otrzymuję ten błąd: błąd składni na tokenie „int”, wymiary oczekiwane po tym tokenie.
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);
}
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.of
działa to tylko dla większości 10
wpisów, jeśli masz więcej niż 10
wpisów, których możesz użyć:
Map.ofEntries(entry(1, new Point2D.Double(50, 50)), entry(2, new Point2D.Double(100, 50)), ...);
import java.util.Map; import java.util.HashMap;
lubimport java.util.*;