StringBuilder和StringBuffer 不能用做 HashMap的key
String a = new String ("aaa");
String b = new String ("aaa");
HashMap<String ,Integer> hashMap = new HashMap();
hashMap.put(a,0);
hashMap.put(b,1);
for (Map.Entry<String ,Integer> entry : hashMap.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
输出
aaa
111
StringBuilder a = new StringBuilder("aaa");
StringBuilder b = new StringBuilder("aaa");
HashMap<StringBuilder,Integer> hashMap = new HashMap();
hashMap.put(a,0);
hashMap.put(b,1);
for (Map.Entry<StringBuilder,Integer> entry : hashMap.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
输出
aaa
1
aaa
0
String Builder没有复写hashcode和equals方法,两个对象内存地址不同,即被判定为新的对象。