Это действительно зависит от того, какой тип безопасности вам нужен. Неуниверсальный способ сделать это лучше всего сделать так:
Map x = new HashMap();
Обратите внимание, что x
напечатано как Map
. это значительно упрощает изменение реализаций (на TreeMap
или LinkedHashMap
) в будущем.
Вы можете использовать дженерики для обеспечения определенного уровня безопасности типов:
Map<String, Object> x = new HashMap<String, Object>();
В Java 7 и более поздних версиях вы можете сделать
Map<String, Object> x = new HashMap<>();
Выше, хотя и более многословно, избегает предупреждений компилятора. В этом случае содержимое HashMap
может быть любым Object
, так что это может быть Integer
, int[]
и т. Д., Что вы и делаете.
Если вы все еще используете Java 6, Библиотеки Гуавы (хотя это довольно легко сделать самостоятельно) имеет метод, называемый newHashMap()
, который устраняет необходимость дублировать универсальный вводя информацию, когда вы делаете new
. Он выводит тип из объявления переменной (это функция Java, недоступная в конструкторах до Java 7).
Кстати, когда вы добавляете int или другой примитив, Java автоматически его блокирует. Это означает, что код эквивалентен:
x.put("one", Integer.valueOf(1));
Конечно, вы можете поместить HashMap
в качестве значения в другое HashMap
, но я думаю, что есть проблемы, если вы делаете это рекурсивно (то есть HashMap
как само по себе значение).