配列のhashCode()は要素に無関係なのか

つまり、HashMapのキーとして配列は全く使えない。

それに対して、ListのhashCode()は要素から取るので、要素が全く一緒なListのhashCode()は同一になる。当然、equalsもtrue。

んー、使いにくいなぁ。

追記

上の動作検証をするとき、実はArrayList同士の比較をしただけだったけど、配列クラスを継承できればいいんだけどによるとListインタフェースの定義としてListのhashCode()は要素から取得するようになっているらしい。

というわけで、検証は不十分だったけど説明は間違ってなかった。はふー。

で、List#hashCode()の実装はjava.util.AbstractListでされている様子。ListのJavadocに書くんなら、Listで実装するべきだろうと思うけど…。

この辺のinterfaceとabstract classの使い分けって、よくわからん。単一継承の副作用か。