繁体   English   中英

创建HashMaps的不同方法

[英]Different Ways of Creating HashMaps

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

HashMap hash1 = new HashMap();

VS

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

我想当你定义一个HashMap时,它需要Key和Value。 任何帮助将非常感激。 谢谢。

这些是你有的选择:

J2SE <5.0风格:

 Map map = new HashMap();

J2SE 5.0+样式(使用泛型 ):

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

Google Guava风格(更短更灵活):

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

您应该查看Java泛型 ,如果您没有指定HashMap的类型,则key和value都将是Object类型。

因此,如果您想要一个带有Integer键和String值的HashMap,例如:

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

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

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

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

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

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

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

- > Erasure是其中的处理type parameterstype arguments从由编译器的一般类和接口移除 ,以使其背面与其中不使用泛型写入的代码兼容

所以,

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

成为Raw type

HashMap map = new HashMap();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM