2017-09-03 1 views
0

pourquoi HashMap contient une seule valeur null dans java?pourquoi HashMap contient une seule valeur null dans java?

J'ai demandé dans une interview pourquoi HashMap autorise une valeur nulle. J'ai trouvé un article décrivant l'implémentation de HashMap. mais ne montre pas pourquoi il ne contient que null. quelle est la raison derrière cela, pourquoi le design Designer contient Null. De Source Oracle ...

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable 

implémentation basée sur la table de hachage de l'interface de la carte. Cette implémentation fournit toutes les opérations de mappe facultatives et autorise les valeurs null et la clé null. (La classe HashMap est à peu près équivalente à Hashtable

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html 
but why HashMap allows only single Null value ? 
+1

Y at-il une autre clé qui est "autorisée" plus d'une fois? ;) – alfasin

+0

mais pourquoi null, il devrait être vide. –

+0

ce qui devrait être "vide"? – luk2302

Répondre

0

Nous pouvons spéculé que HashMap permet null les clés et null valeurs, car il est utile de le faire. Ou, de l'autre côté, il ne serait pas apporter beaucoup de valeur ajoutée à interdire nulls.

HashMap permet pour un seul null clé, car Map s en général ne prennent pas en charge les clés en double.

+0

est nul donnant cette unicité, si oui comment? – shiv

+0

@shiv Bien sûr que non. Vous ne pouvez pas dupliquer les clés 'null' car vous ne pouvez pas avoir de clés en double. – lexicore

0

Hashtable (le prédécesseur de HashMap) ne permettait pas nulle qui était un pita dans les cas où vous avez besoin d'une carte où vous avez stocké des paires clé-valeur avec null comme valeur possible parce que vous essayez de définir ce lead à une exception NullPointerException.

Vous avez fini par créer un private final static Object NULL qui est défini comme valeur et chaque fois que vous définissez ou récupérez une valeur, vous devez vérifier null/la valeur représentative et la modifier en conséquence.

HashMap permettant une valeur nulle était très apprécié pour cette raison.