我應該什麼時候做一個,我應該什麼時候做另一個,尤其是在兩者都滿足的情況下?例如,考慮我是否需要一個類型爲<String, String>
的Hashmap。是否有任何理由做一個類型爲<Object, Object>
的散列表?創建具有定義類型與對象的Hashmap是否具有性能優勢?
是否有性能好處/處罰,或者是清晰度問題?
我應該什麼時候做一個,我應該什麼時候做另一個,尤其是在兩者都滿足的情況下?例如,考慮我是否需要一個類型爲<String, String>
的Hashmap。是否有任何理由做一個類型爲<Object, Object>
的散列表?創建具有定義類型與對象的Hashmap是否具有性能優勢?
是否有性能好處/處罰,或者是清晰度問題?
我想你正在使用的HashMap是這樣的:
Map map = new HashMap();
map.put("aKey","value");
String v =(String)map.get("aKey");
您可以使用它像這樣:
Map<String,String> map= new HashMap<String,String>();
map.put("aKey","value");
String v = map.get("aKey");
因爲它被用作多態引用。你想要的字符串我可能想要我自己的自定義類。因此,使它通用,他們已經使用了對象。但是,您可以使用泛型來避免投射。
謝謝!我不完全理解泛型(除了表面上的意思),所以這對我來說有點模糊。 – itsmichaelwang
//If you dont make generic then you have to cast the object
HashMap myMap = new HashMap();
// If you make it generic then you dont have to cas the object
HashMap<String, String> myMap2 = new HashMap<String, String>();
泛型是你的朋友。 http://docs.oracle.com/javase/tutorial/java/generics/index.html –
您的問題僅在'java-1.4'之前有效。從'java-1.5'的泛型會做訣竅 –
順便說一句你只能在HashMap中存儲一個對象的引用,你不會存儲/複製實際的對象。 –