当我尝试将数组和数组列表作为键放在 Map 中时遇到了这个问题。第一段代码:
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]);
}
第二段代码:</p>
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(或者集合作为键)是一个好习惯吗?