Hashtable,HashMap,ConcurrentHashMap

2872 ワード

一.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;
        }