小编abh*_*jit的帖子

当Equals重写为始终返回False时,HashMap和Hashtable的不同行为

我很困惑,因为我认为当涉及到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

3
推荐指数
1
解决办法
125
查看次数

标签 统计

java ×1