创建HashMaps的不同方法
我最近一直在学习HashMaps,但我有一个问题似乎无法得到明确的答案。 主要区别 –
HashMap hash1 = new HashMap();
VS
HashMaphash1 = new HashMap (); //Filled in with whatever Key and Value you want.
我想当你定义一个HashMap时,它需要Key和Value。 任何帮助将非常感激。 谢谢。
这些是你有的选择:
J2SE <5.0风格:
Map map = new HashMap();
J2SE 5.0+样式(使用generics ):
Map map = new HashMap();
Google Guava风格(更短更灵活):
Map map = Maps.newHashMap();
您应该查看Javagenerics ,如果您没有指定HashMap的类型,则key和value都将是Object
类型。
因此,如果您想要一个带有Integer
键和String
值的HashMap,例如:
HashMap hashMap= new HashMap();
通过启用编译时键入实施,指定key
和value
类型可以提高类型安全性。
这样可以更轻松地编写不会意外混淆键和值类型的代码,并减少必须在代码中明确声明的强制转换量。
但是,重要的是要注意这些类型检查只是编译时,即一旦应用程序运行,JVM将允许您使用任何类型的键和值。
– Generics
可以隐含在类,接口,方法,变量等中。但是使用它的最重要原因是使Collection
更安全 。
– Generics
确保只有特定类型的对象进入和出自 Collections
。
–此外值得一提的是有一个称为Erasure
的过程,
– > Erasure
是一个进程,其中type parameters
和type arguments
被编译器从generics类和接口中删除 ,使其与没有generics的代码一致。
所以,
HashMap
成为Raw type
,
HashMap map = new HashMap();