1
鍵我有一個簡單的IdentityHashmap:使用字符串作爲IdentityHashMap
IdentityHashmap<String, Integer> map;
現在我想用字符串作爲鍵。主要的問題是java字符串處理池:
String a = "Hello";
String b = "Hello";
map.put(a, 1);
map.put(b, 2);
System.out.println(map.get(a)) //Prints "2" since a == b
我知道我可以通過使用new String("Hello")
代替"Hello"
避免這個問題,但我得到的字符串作爲參數,因爲我不能強迫用戶使用新的構造我不知道如何解決這個問題。
你爲什麼使用IdentityHashMap?在什麼情況下,你想要相同的字符串有不同的價值觀,爲什麼? – user2357112 2015-04-05 14:35:12
我在某些序列化系統中使用它。它允許用戶保存和刪除對象而不用重寫整個文件: 'File.save(Object o)' 'File.delete(Object o)' 如果某個對象等於某些其他對象,它們仍然需要分開存儲。 – Crigges 2015-04-05 14:44:40
爲什麼你遇到問題的行爲呢?爲什麼這些字符串需要單獨的對象?你的序列化系統在處理共享結構上不好嗎? – user2357112 2015-04-05 15:04:42