null許容コレクションと不許容コレクション

2015年6月15日月曜日

Java

Javaのコレクション型の中には要素(Mapの場合はキーも)としてnullを許容するものと許容しないものがある。例えばHashMapはキーと値にnullを許容するけど、TreeMapはキーとしてnullを許容しない。

なんでこんなことになっているかというとTreeMapは要素をソートするためにキーの値を見る必要があるからだろう。普通はソートするためにnullと比較することは出来ないからだ。
逆に言えば、TreeMapはコンストラクタにnull許容なComparatorを渡せば、キーとしてnullが扱えるようになる。

つまり一般的には要素の属性を利用するものはnull不許容で、要素の属性を利用しないものはnull許容と考えればいい。