首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

HashMap HashTable 中equals的兑现

2012-10-26 
HashMap HashTable 中equals的实现HashMappublic synchronized boolean equals(Object o) {if (o this)

HashMap HashTable 中equals的实现

HashMap

    public synchronized boolean equals(Object o) {if (o == this)    return true;if (!(o instanceof Map))    return false;Map<K,V> t = (Map<K,V>) o;if (t.size() != size())    return false;        try {            Iterator<Map.Entry<K,V>> i = entrySet().iterator();            while (i.hasNext()) {                Map.Entry<K,V> e = i.next();                K key = e.getKey();                V value = e.getValue();                if (value == null) {                    if (!(t.get(key)==null && t.containsKey(key)))                        return false;                } else {                    if (!value.equals(t.get(key)))                        return false;                }            }        } catch (ClassCastException unused)   {            return false;        } catch (NullPointerException unused) {            return false;        }return true;    }

?

可以看出两者的实现原理都是一样的!

?

都是先比较对象的句柄地址,如果一样就直接true,再比较是不是Map对象,是不是长度一致,是不是键值对一致。

热点排行