Java 创建哈希映射的不同方法

Java 创建哈希映射的不同方法,java,hashmap,Java,Hashmap,我最近一直在学习HashMaps,但我有一个问题似乎无法得到明确的答案。两者之间的主要区别- HashMap hash1 = new HashMap(); vs hashmaphhash1=newhashmap()//填入您想要的任何键和值。 我认为定义HashMap时需要键和值。任何帮助都将不胜感激。谢谢。您应该看看,如果不指定HashMap的类型,则key和value都将是Object类型 因此,如果您想要一个包含Integer键和String值的HashMap,例如: Hash

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

HashMap hash1 = new HashMap();
vs

hashmaphhash1=newhashmap()//填入您想要的任何键和值。
我认为定义HashMap时需要键和值。任何帮助都将不胜感激。谢谢。

您应该看看,如果不指定HashMap的类型,则key和value都将是
Object
类型

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

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

指定
类型可以通过启用编译时键入强制来实现更大的类型安全性

这使得编写不会意外混淆键和值类型的代码变得更容易,并减少了必须在代码中显式声明的强制转换数量


但是,重要的是要知道这些类型检查仅在编译时进行,也就是说,一旦应用程序运行,JVM将允许您对键和值使用任何类型

-
泛型可以隐含到类、接口、方法、变量等。。但是使用它的最重要的原因是使
集合
更加类型安全


-
泛型
确保只有特定类型的对象进入和退出
集合

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

->
擦除
是编译器从泛型类和接口中删除
类型参数
类型参数
的过程
,使其与编写时不使用泛型的代码向后兼容

所以

HashMap map=newhashmap()

变成
原始类型


HashMap map=newhashmap()

这些是您的选项:


J2SE+1对编译时和运行时的差异进行了很好的解释。另外,将变量声明为映射也是一个好习惯-请快速查看以获取更多信息。Java,并感谢您的帖子。您有没有理由不将任何答案标记为已接受的答案?欢迎@StaticGamedude,你能考虑把它当作答案吗?有用选票下面的复选标记:)
    HashMap<Integer, String> hashMap= new HashMap<Integer, String>();
 Map map = new HashMap();
 Map<KeyType, ValueType> map = new HashMap<KeyType, ValueType>();
 Map<KeyType, ValueType> map = Maps.newHashMap();