web-dev-qa-db-fra.com

Pourquoi la clé nulle n'est pas autorisée dans TreeMap?

J'essaie de comprendre le concept du framework Java Collection et suis venu à cette question - Pourquoi la clé nulle n'est pas autorisée dans TreeMap?

Cela donne NullPointerException si nous essayons d’ajouter une clé nulle dans TreeMap. 

J'ai essayé de google le travail interne de TreeMap et trouvé quelque chose comme TreeMap utilise l'algorithme d'arbre RedBlack qui est difficile à comprendre pour moi en ce moment et j'y travaille.

TreeMap est une implémentation de NavigableMap basée sur l’arbre rouge-noir. mots, il trie les clés d’objet TreeMap à l’aide de l’arbre rouge-noir algorithme.

S'il vous plaît, effacez-moi, alors que les deux autres implémentations de l'interface Map autorisent une clé null, alors pourquoi TreeMap n'autorise-t-il pas l'ajout d'une clé null?

Je voudrais remercier pour l'explication à l'avance. 

6
Amol Patil

TreeMap autorise les clés nulles. Le comparateur par défaut natural ordering est celui qui lève l'exception.

À partir de documentation of TreeMap.put:

NullPointerException - si la clé spécifiée est null et que cette carte utilise un ordre naturel ou si son comparateur n'autorise pas les clés nulles

Le moyen le plus simple d'autoriser les valeurs NULL consiste à créer la variable TreeMap avec un comparateur tel que Comparator.nullsFirst(Comparator.naturalOrder()) ou Comparator.nullsLast(Comparator.naturalOrder())

17
kapex

J'avais la même impression que Treemap n'autorisait aucune clé nulle, mais en utilisant Java 6 j'ai découvert que je pouvais ajouter le premier élément avec la clé null dans treemap, mais avec Java 8 ce n'est pas le cas.

 Map<String, Date> productStartDatesBySourceProductID = new TreeMap<String, Date>();

 enter image description here

0
Gaurav