创建HashMaps的不同方法

时间:2012-10-30 17:41:13

标签: java hashmap

我最近一直在学习HashMaps,但我有一个问题似乎无法得到明确的答案。 -

之间的主要区别
HashMap hash1 = new HashMap();

vs

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

我认为在定义HashMap时需要Key和Value。任何帮助将非常感激。谢谢。

4 个答案:

答案 0 :(得分:18)

这些是您的选择:

J2SE&lt; 5.0 style:

 Map map = new HashMap();

J2SE 5.0+样式(使用generics):

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

Google Guava样式(更短,更灵活):

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

答案 1 :(得分:10)

您应该查看Java generics,如果您没有指定HashMap的类型,则键和值都将为Object类型。

因此,如果您希望HashMap具有Integer个键和String值,例如:

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

答案 2 :(得分:3)

通过启用编译时键入实施,指定keyvalue类型可以提高类型安全性。

这样可以更轻松地编写不会意外混淆键和值类型的代码,并减少必须在代码中明确声明的强制转换量。

但是,重要的是要注意这些类型检查只是编译时,即一旦应用程序运行,JVM将允许您使用任何类型的键和值。

答案 3 :(得分:1)

- Generics可以隐含在类,接口,方法,变量等中。但最重要的原因,其使用的是{ {1}} 更安全类型

- Collection确保只有Generics的特定类型的对象进入和出现

- 此外值得一提的是有一个称为Collections的过程,

- &GT; Erasure是一个过程,其中Erasuretype parameters 被编译器从通用类和接口中删除,使其返回兼容使用不带泛型的代码。

所以,

type arguments

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

Raw type