同じString
が実際には同じでない場合は、同じString
オブジェクトを使用せずにHashMap
の文字列をキーとして使用するのはなぜですか?なぜHashMapのキーとして文字列を使用できますか?
String s1 = "Test";
String s2 = "Test";
System.out.println(s1 == s2); // should be false
System.out.println(s1.equals(s2)); // should be true
HashMap<String, String> map = new HashMap();
map.put(s1, "foo");
System.out.println(map.get(s2)); // should be "foo"--but why?
HashMap
はString
オブジェクトのためのいくつかの特別な振る舞いを持っていますか?もしそうでなければ、2つの "異なる"文字列を使ってハッシュ値を入れたり、値を取得したりすることができますか?
文字列インターンのため、 's1 == s2'は' true'になります。 –
それで 'String'を比較するために' .equals() 'を使うのはなぜ標準的な習慣ですか? –
@Ted Hopp s1 == s2は*定数プールのためにtrueになります。 – EJP