簡體   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