实例化没有尖括号的hashmap和有什么区别?

时间:2012-01-12 03:40:30

标签: java generics

以下是什么区别?

new HashMap(); vs new HashMap<Integer, String>();

我从未使用过前者或看过它,但是我应该知道有什么不同吗?

3 个答案:

答案 0 :(得分:4)

第一个不知道hashmap的数据类型。您可以在此地图中包含任何类型的对象。第二个指定此映射的键和值类型。您只能将这些类型插入到地图中。这种方法称为泛型。

答案 1 :(得分:3)

以下语句将创建一个键值类型为raw的地图。 (java.lang.Object中)。

HashMap map=new HashMap();

在第二个声明中,您指定的类型为KeyValue(阅读Java Generics)。

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

答案 2 :(得分:2)

  1. 应为new Hashmap<Integer, String>()
  2. 第一种情况将使用Object类型作为键和值,并在您检索它们时返回Object个实例。在第二种情况下,您指定密钥应为Integer类型且值为String类型。因此,您应该相应地添加,当您检索时,您将获得值的String对象和键的Integer对象,并且您不需要像前一种情况那样进行强制转换。
  3. P.S。我认为您应该使用Integer而不是int的原因是,如果某些方法需要返回null,则使用的类型应为“可为空”。 int不可为空。