Hashtable,HashMap,ConcurrentHashMap

一.Hashtable
1.Hashtable和ConcurrentHashMap都是线程安全的,HashMap非线程安全的,要想使用HashMap并发,还要自己实现。
2.实现原理是hashtable,存储的数据结构是Entry数组链表;

 private transient Entry,?>[] table;

3.Hashtable要重写hashCode()和equals()方法;其中equals方法:

public synchronized boolean equals(Object o) {
//  如果引用指向的地址都相同,肯定是同一个对象;
            if (o == this)
                return true;
//如果类型不一样,也是false
            if (!(o instanceof Map))
                return false;
            Map t = (Map) o;
            if (t.size() != size())
                return false;

            try {
                Iterator> i = entrySet().iterator();
                while (i.hasNext()) {
                    Map.Entry 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;
        }

你可能感兴趣的:(java)