以下幾點有什麼區別?實例化沒有尖括號的哈希表和使用什麼區別?
new HashMap();
vs new HashMap<Integer, String>();
?
我從來沒有用過前者或看過它,但有什麼區別我應該知道嗎?
以下幾點有什麼區別?實例化沒有尖括號的哈希表和使用什麼區別?
new HashMap();
vs new HashMap<Integer, String>();
?
我從來沒有用過前者或看過它,但有什麼區別我應該知道嗎?
第一個不知道什麼類型的數據散列表具有。您可以在此地圖中擁有任何類型的對象。第二個規定了該地圖的關鍵和值類型。您只能將這些類型插入到地圖中。這種方法被稱爲泛型。
new Hashmap<Integer, String>()
。Object
類型的鍵和值,並在您檢索它們時返回Object
實例。在第二種情況下,您指定鍵應該是Integer
類型,值是String
類型。所以,你應該相應地添加,當你檢索時,你會得到String
對象的值和Integer
對象的鍵,你不會需要像前一種情況下強制轉換。P.S.我認爲你應該使用Integer
而不是int
的原因是,如果某種方法需要返回null
,則使用的類型應該是「空」。 int
不可爲空。
以下語句將創建一個映射,其鍵值類型爲raw
。 (java.lang.Object中)。
HashMap map=new HashMap();
在第二份聲明,您指定的Key
和Value
型(讀Java Generics)。
HashMap<Integer,String> map=new HashMap<Integer,String>();
你的第二個例子不能編譯。 – 2012-01-12 03:42:37