以下是什么区别?
new HashMap();
vs new HashMap<Integer, String>();
?
我从未使用过前者或看过它,但是我应该知道有什么不同吗?
答案 0 :(得分:4)
第一个不知道hashmap的数据类型。您可以在此地图中包含任何类型的对象。第二个指定此映射的键和值类型。您只能将这些类型插入到地图中。这种方法称为泛型。
答案 1 :(得分:3)
以下语句将创建一个键值类型为raw
的地图。 (java.lang.Object中)。
HashMap map=new HashMap();
在第二个声明中,您指定的类型为Key
和Value
(阅读Java Generics)。
HashMap<Integer,String> map=new HashMap<Integer,String>();
答案 2 :(得分:2)
new Hashmap<Integer, String>()
。 Object
类型作为键和值,并在您检索它们时返回Object
个实例。在第二种情况下,您指定密钥应为Integer
类型且值为String
类型。因此,您应该相应地添加,当您检索时,您将获得值的String
对象和键的Integer
对象,并且您不需要像前一种情况那样进行强制转换。 P.S。我认为您应该使用Integer
而不是int
的原因是,如果某些方法需要返回null
,则使用的类型应为“可为空”。 int
不可为空。