我很困惑,因为我认为当涉及到hashCode和equals方法时,HashMap和Hashtable应该表现相同.在下面的示例中,我的键类已重写equals方法以始终返回false.
任何人都有任何想法可以解释这种行为上的差异,因为看起来两者的输出是不同的
值null
值null
价值1
价值2
import java.util.Hashtable;
import java.util.HashMap;
public class HashTest {
public static void main(String[] args) {
Hashtable ht = new Hashtable();
HashMap hm = new HashMap();
KeyClass k1 = new KeyClass("k1");
KeyClass k2 = new KeyClass("k2");
ht.put(k1, "Value 1");
ht.put(k2, "Value 2");
hm.put(k1, "Value 1");
hm.put(k2, "Value 2");
System.out.println("value " + ht.get(k1));
System.out.println("value " + ht.get(k2));
System.out.println("value " + hm.get(k1));
System.out.println("value " + hm.get(k2));
}
}
class KeyClass {
String key;
public KeyClass(String str) {
key …Run Code Online (Sandbox Code Playgroud) java ×1