Различные способы создания HashMaps

Я недавно узнал о HashMaps, но у меня есть один вопрос, на который я, похоже, не могу получить четкий ответ. Основное различие между -

HashMap hash1 = new HashMap();

vs

HashMap<,>hash1 = new HashMap <,> (); //Filled in with whatever Key and Value you want. 

Я подумал, что, когда вы определяете HashMap, он требует ключа и значения. Любая помощь приветствуется. Спасибо.

Ответ 1

Вот те варианты, которые у вас есть:

J2SE < 5.0 style:

 Map map = new HashMap();

Стиль J2SE 5.0+ (использование generics):

 Map<KeyType, ValueType> map = new HashMap<KeyType, ValueType>();

Стиль Гуавы (более короткий и гибкий):

 Map<KeyType, ValueType> map = Maps.newHashMap();

Ответ 2

Вы должны взглянуть на Java generics, если вы не укажете типы HashMap, оба ключа и значения будут Object.

Итак, если вы хотите использовать HashMap с Integer и String значениями:

    HashMap<Integer, String> hashMap= new HashMap<Integer, String>();

Ответ 3

Указание типов key и value позволяет повысить безопасность типов за счет включения принудительного ввода текста во время компиляции.

Это упрощает запись кода, который случайно не смешивает типы ключей и значений и уменьшает количество бросков, которые вы должны явно объявить в коде.

Однако важно помнить, что эти проверки типов являются только временем компиляции, то есть, как только приложение будет запущено, JVM позволит вам использовать любые типы для ключей и значений.

Ответ 4

- Generics может подразумеваться для классов, интерфейсов, методов, переменных и т.д., но самая важная причина, для которой используется Collection более безопасный тип.

- Generics убедитесь, что входит только определенный тип объекта и выходит из Collections.

- Кроме того, стоит отметить, что существует процесс, известный как Erasure,

- > Erasure - это процесс, в котором type parameters и type arguments удаляются из общих классов и интерфейсов компилятором, что делает его совместимым с обратной связью с кодами, где написано без Generics.

Итак,

HashMap<String, Integer> map = new HashMap<String, Integer>();

принимает значение Raw type,

HashMap map = new HashMap();