Javaコレクションフレームワーク)の背後にある概念を理解しようとしていますが、この質問に出会いました-TreeMapでnullキーが許可されないのはなぜですか?
TreeMapにnullキーを追加しようとすると、NullPointerExceptionが発生します。
TreeMapの内部動作をグーグルしようとしましたが、TreeMapのような何かがRedBlackツリーアルゴリズムを使用していることを発見しました。これは、今のところ私には理解が難しく、私はそれに取り組んでいます。
TreeMapは、Red-BlackツリーベースのNavigableMap実装です。つまり、Red-Blackツリーアルゴリズムを使用してTreeMapオブジェクトキーをソートします。
Mapインターフェースの他の2つの実装ではnullをキーとして許可していますが、TreeMapではnullをキーとして追加できないのはなぜですか?
あらかじめご説明をお願い申し上げます。
TreeMap
はnullキーを許可します。デフォルト自然順序付けコンパレータは、例外をスローするコンパレータです。
_TreeMap.put
_の documentation から:
NullPointerException
-指定されたキーがnullであり、このマップが自然順序付けを使用している場合、またはそのコンパレータがnullキーを許可していない場合
Null値を許可する最も簡単な方法は、Comparator.nullsFirst(Comparator.naturalOrder())
またはComparator.nullsLast(Comparator.naturalOrder())
のようなコンパレータを使用してTreeMap
を作成することです