[英]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>();
通過啟用編譯時鍵入實施,指定key
和value
類型可以提高類型安全性。
這樣可以更容易地編寫不會意外混淆鍵和值類型的代碼,並減少必須在代碼中顯式聲明的強制轉換量。
但是,重要的是要注意這些類型檢查只是編譯時,即一旦應用程序運行,JVM將允許您使用任何類型的鍵和值。
- Generics
可以隱含在類,接口,方法,變量等中。但是使用它的最重要原因是使Collection
更安全 。
- Generics
確保只有特定類型的對象進入和出自 Collections
。
-此外值得一提的是有一個稱為Erasure
的過程,
- > Erasure
是其中的處理type parameters
和type arguments
是從由編譯器的一般類和接口移除 ,以使其背面與其中不使用泛型寫入的代碼兼容 。
所以,
HashMap<String, Integer> map = new HashMap<String, Integer>();
成為Raw type
,
HashMap map = new HashMap();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.