gpt4 book ai didi

java - 当 Equals 被覆盖以始终返回 False 时,HashMap 和 Hashtable 的不同行为

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:23:22 25 4
gpt4 key购买 nike

<分区>

我有点困惑,因为我认为 HashMap 和 Hashtable 在涉及 hashCode 和 equals 方法时应该表现相同。在下面的这个例子中,我的关键类重写了 equals 方法以始终返回 false。

有没有人知道可以解释这种行为差异,因为两者的输出似乎不同

值为空

值为空

值值 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 = str;
}

@Override
public int hashCode() {
return 2;
}

@Override
public boolean equals(Object obj) {
return false;
}
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com