Javaのコレクション型の中には要素(Mapの場合はキーも)としてnullを許容するものと許容しないものがある。例えばHashMapはキーと値にnullを許容するけど、TreeMapはキーとしてnullを許容しない。
なんでこんなことになっているかというとTreeMapは要素をソートするためにキーの値を見る必要があるからだろう。普通はソートするためにnullと比較することは出来ないからだ。
逆に言えば、TreeMapはコンストラクタにnull許容なComparatorを渡せば、キーとしてnullが扱えるようになる。
つまり一般的には要素の属性を利用するものはnull不許容で、要素の属性を利用しないものはnull許容と考えればいい。
なんでこんなことになっているかというとTreeMapは要素をソートするためにキーの値を見る必要があるからだろう。普通はソートするためにnullと比較することは出来ないからだ。
逆に言えば、TreeMapはコンストラクタにnull許容なComparatorを渡せば、キーとしてnullが扱えるようになる。
つまり一般的には要素の属性を利用するものはnull不許容で、要素の属性を利用しないものはnull許容と考えればいい。
0 件のコメント:
コメントを投稿