Створіть карту на Java


84

Я хотів би створити, mapщо містить записи, що складаються з(int, Point2D)

Як я можу це зробити на Java?

Я невдало спробував наступне.

HashMap hm = new HashMap();

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

ваш hm.put виглядає більше якMap<Integer, Double>
Луїджі Мендоса

перевірте це посилання stanford.edu/group/coursework/docsTech/jgl/api/…
Meherzad

1
Що ви маєте на увазі не успішно?
texasbruce

Відповіді:


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

8
Ви також повинні зробити import java.util.Map; import java.util.HashMap;абоimport java.util.*;
Макс

19

Існує навіть кращий спосіб створити карту разом з ініціалізацією:

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

Для отримання додаткових опцій подивіться тут Як я можу ініціалізувати статичну карту?


4
Це справді поганий спосіб ініціалізації карти.
Kao

1
@Kao Чому? Це просто візуально містить операцію, інакше вона ідентична верхній відповіді на це питання.
Ентоні Мансур

5
Ні це не так. Це подвійна дужка ініціалізації, яка є, загалом кажучи, анти-шаблоном. Ось чому .
Kao

18

Java 9

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

8
Map.of(1, "A", 2, "B", 3, "C")краще
Жека Козлов


@ZhekaKozlov Я намагався використати Map.of, під час запуску тесту сказано, що не вдалося знайти символjava: cannot find symbol symbol: method of(java.lang.String,double) location: interface java.util.Map
soMuchToLearn

@soMuchToLearn Яку версію Java ви використовуєте? Бігjava -version
Жека Козлов

java 11, @ZhekaKozlovopenjdk 11.0.8 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
soMuchToLearn

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

Point2D.Doubleне виглядає як Point2D= \
Луїджі Мендоса

використовуючи Map<int, Point2D> hm = new HashMap<int, Point2D>(), я отримую таку помилку: Синтаксична помилка на маркері "int", розміри очікуються після цього маркера.
Кевін Мередіт

Забув, що карти Java не підтримують примітивні типи. Виправлено.
Ахром

але мені потрібно Point2D як значення в [ключ, значення]. : /
Кевін Мередіт

Це я спочатку писав.
Ахром

1

Я використовую такий тип популяції Map завдяки 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);
  }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.