求解释这道题是怎么运算的,答案是2:2:1:1

neal2004 发布于 2013/05/11 13:38
阅读 357
收藏 0
class KeyMaster {
    public int i;

    public KeyMaster(int i) {
        this.i = i;
    }

    public boolean equals(Object o) {
        return i == ((KeyMaster) o).i;
    }

    public int hashCode() {
        return i;
    }
}


public class MapIt {
    public static void main(String[] args) {
        Set set = new HashSet();
        KeyMaster k1 = new KeyMaster(1);
        KeyMaster k2 = new KeyMaster(2);
        set.add(k1);
        set.add(k1);
        set.add(k2);
        set.add(k2);
        System.out.print(set.size() + ":");
        k2.i = 1;
        System.out.print(set.size() + ":");
        set.remove(k1);
        System.out.print(set.size() + ":");
        set.remove(k2);
        System.out.print(set.size());
    }
}

 求解释这道题是怎么运算的,答案是2:2:1:1

加载中
0
sjunjun
sjunjun
你贴代码也不贴点格式正常的
neal2004
neal2004
手机版的,不好编辑
0
PYZWORLD
PYZWORLD
一般来说这格式没人会回答
0
南湖船老大
南湖船老大

引用来自“PYZWORLD”的答案

一般来说这格式没人会回答
+1
0
中山野鬼
中山野鬼

引用来自“PYZWORLD”的答案

一般来说这格式没人会回答
一般来说,回答出来的,也不是人。哈。
0
hikari
hikari
public class MapIt {
    public static void main(String[] args) {
        Set set = new HashSet();
        KeyMaster k1 = new KeyMaster(1);
        KeyMaster k2 = new KeyMaster(2);
        set.add(k1);
        set.add(k1);
        set.add(k2);
        set.add(k2);
        System.out.print(set.size() + ":");
        k2.i = 1;
        System.out.print(set.size() + ":");
        set.remove(k1); //返回 true
        System.out.print(set.size() + ":");

                        set.remove(k2); // 这里返回的是false,remove不成功

        System.out.print(set.size());
    }
}

// k2的内容改变了,k2的hash不存在于set中,所以remove不成功。
返回顶部
顶部