Я хочу создать объект map
, содержащий записи, состоящие из(int, Point2D)
Как я могу сделать это на Java?
Я безуспешно пробовал следующее.
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));
import java.util.Map; import java.util.HashMap;
илиimport java.util.*;
Есть даже лучший способ создать карту вместе с инициализацией:
Map<String, String> rightHereMap = new HashMap<String, String>() { { put("key1", "value1"); put("key2", "value2"); } };
Дополнительные параметры см. Здесь. Как я могу инициализировать статическую карту?
источник
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
не выглядит какPoint2D
= \Map<int, Point2D> hm = new HashMap<int, Point2D>()
, я получаю эту ошибку: Синтаксическая ошибка токена «int», ожидаемые размеры после этого токена.Я использую такую популяцию карт благодаря Java 9. По моему честному мнению, такой подход обеспечивает большую читабельность кода.
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); }
источник
В более новых версиях Java ( например, Java 9 и новее ) вы можете использовать:
Map.of(1, new Point2D.Double(50, 50), 2, new Point2D.Double(100, 50), ...)
в общем:
Однако имейте в виду, что это
Map.of
работает только для большинства10
записей, если у вас больше10
записей, которые вы можете использовать:Map.ofEntries(entry(1, new Point2D.Double(50, 50)), entry(2, new Point2D.Double(100, 50)), ...);
источник