Hashtable,HashMap,ConcurrentHashMap
2872 ワード
一.Hashtable 1.HashtableとConcurrentHashMapはすべてスレッドが安全で、HashMapは非スレッドが安全で、HashMapを使用して同時に実行するには、自分で実現しなければなりません.2.実現原理はhashtableであり、格納されたデータ構造はEntry配列チェーンテーブルである.
3.HashtableはhashCode()とequals()メソッドを書き換える.ここでequalsメソッド:
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;
}