當我嘗試將數組和ArrayList作爲鍵放入Map中時遇到此問題。 第一段代碼:ArrayList <X>作爲HashMap中的鍵,但X []數組不起作用
LinkedHashMap<ArrayList<String>, String> lhm = new LinkedHashMap<ArrayList<String>, String>();
for (int i =0;i < strs.length; i++){
ArrayList<String> arr = new
ArrayList<String>(Arrays.asList(strs[i].toLowerCase().split(" ")));
Collections.sort(arr);
lhm.put(arr, strs[i]);
}
第二條代碼:
LinkedHashMap<String[], String> lhm = new LinkedHashMap<String[], String>();
for (int i =0;i < strs.length; i++){
String[] str = strs[i].toLowerCase().split(" ");
Arrays.sort(str);
System.out.println("***********");
for (String strin :str)
{
System.out.println(strin);
}
System.out.println("***********");
lhm.put(str, strs[i]);
}
的第一段代碼按預期工作,每當我把一個重複鍵(ArrayList中的相同內容的密鑰),它覆蓋前一個鍵的值。 但第二部分不符合預期。它只是把所有的價值。 有人可以解釋這是如何工作的? 這是一個很好的做法,把Array/ArrayList(或可能收藏作爲關鍵)?
使用可變對象作爲地圖的關鍵是罕見的好想法... – assylias 2013-02-20 23:35:06
我不知道你想賺什麼,你能更具體嗎?如果你想要不同值的同一個鍵,你可以使用Guava庫的Multimap。 – Martin 2013-02-20 23:36:47
@pst:是的,這是事實,我相信。但是我只想「懶惰」一次,所以不是使用「array.toString」作爲鍵,而是將數組本身放入。 – Accessdenier 2013-02-20 23:38:51