Nếu hai String
s giống nhau không thực sự giống nhau, thì tại sao tôi có thể sử dụng các chuỗi làm khóa trong một HashMap
mà không sử dụng cùng một đối tượng String
?Tại sao tôi có thể sử dụng Strings làm khóa trong 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?
Có HashMap
có một số hành vi đặc biệt cho String
đối tượng không? Nếu không, tại sao có thể sử dụng hai chuỗi "khác nhau" để đặt và nhận giá trị từ băm?
Lưu ý rằng 's1 == s2' sẽ là' true' do chuỗi ký tự. –
Vậy tại sao thực hành tiêu chuẩn lại sử dụng '.equals()' để so sánh 'String'? –
@Ted Hopp s1 == s2 sẽ là true vì * liên tục tổng hợp *. – EJP