netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-01-23 古い日記からの変換データ [長年日記] ▲
_ Java ▲
Effective Java を読んでいて,java.util.LinkedHashMap などという知らないクラスの名前が出ていたので調べてみた.JDK 1.4 でちょっとだけ増えてたクラスたちだが,IdentityHashMap: Keyがequalsではなく == で比較されるHashMap.地味に static int System.identityHashCode(Object),つまり Object.hashCode の実装で計算されるオブジェクトのハッシュコードを返す関数を使って実装されているらしい.こんなメソッド,普通は存在を知らないって.
WeakIdentityHashMap はさすがにないようなので,弱参照を使いたい人は,素直にキーオブジェクトのequals(Object) を a==b で実装するほうがいいらしい.
LinkedHashMap: エントリが配列ではなく,二重の Linked List で実装されているらしい.マップのエントリが挿入順で保存されるので,コピーしたときなどに順序が予測可能(元と同じ)という利点があるそうな.LinkedHashSet: LinkedHashMapのSet版.
まだまだ Java には知らないライブラリがたくさんあるのだろうか…….