配列と配列リストをマップのキーとして配置しようとすると、この問題が発生します。最初のコード:
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]);
}
2 番目のコード:</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) を配置するたびに、前のキーの値をオーバーライドします。しかし、2番目の部分は期待どおりに機能しません。すべての値をそこに入れるだけです。誰でもこれがどのように機能するか説明できますか? そして、Array/ArrayList(またはコレクションをキーとして)を置くことは良い習慣ですか?