HashMap
внутренне использует Node<K, V>
array
против Hashtable
внутренне использует Map.Entry<K, V>
array
, почему эта внутренняя разница:HashMap внутренне использует узел <K, V> массив против Hashtable внутренне использует Map.Entry <K, V> массив, почему это внутреннее различие?
HashMap использует Node внутренний класс реализации Map.Entry.
static class Node<K,V> implements Map.Entry<K,V> {
final int hash;
final K key;
V value;
Node<K,V> next;
Node(int hash, K key, V value, Node<K,V> next) {
this.hash = hash;
this.key = key;
this.value = value;
this.next = next;
}
Hashtable использует Map.Entry.
private static class Entry<K,V> implements Map.Entry<K,V> {
final int hash;
final K key;
V value;
Entry<K,V> next;
protected Entry(int hash, K key, V value, Entry<K,V> next) {
this.hash = hash;
this.key = key;
this.value = value;
this.next = next;
}
швы одинаковые, но они разные.
Есть ли какие-либо конкретные причины для использования HashMap
использует Node<K,V>
array
вместо Map.Entry<K,V>
array
?
Насколько я вижу, разница между этими классами заключается только в том, что у них разные имена. Обратите внимание, что 'Entry' не совпадает с 'Map.Entry '. –
axtavt
Последнее предложение в этом вопросе, похоже, спрашивает, есть ли причина использовать HashMap вместо Hashtable. Ответ: Всегда используйте HashMap, если вы не работаете с API, для которого требуется экземпляр Hashtable, потому что Hashtable является задержкой с Java 1.0, которая имеет в основном бесполезную синхронизацию по каждому методу. – VGR