netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-01-24 古い日記からの変換データ [長年日記] ▲
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 には知らないライブラリがたくさんあるのだろうか…….
2003-01-22 古い日記からの変換データ [長年日記] ▲
_ SVG ▲
グラフ表現が JPEG では重いので SVG にしてみた.表示ツールとしては,Adobe SVG Viewer + IE と batik SVG browser を試してみた.SVG を拡大・縮小はできてもパン(スクロール)させて見ることができないなーと思っていたら,IE 上では ALT キーを押しながら,batik では SHIFT 押しながらのマウスのドラッグで行けた.マニュアル見ない限り分からないって.
メモリ使用量はJPEG版で100MBちょっとくらいのものがbatik SVG browser では60MB程度,IEでは20MB弱まで抑えることに成功.
batik の SVG browser は java -jar batik-squiggle.jar で起動できるシンプルなツールの様子.さすがに Adobe SVG Viewer のほうがよかった.ALT + ドラッグで移動,CTRL + クリックで拡大,CTRL+SHIFT+クリックで縮小表示らしい.けっこう再描画も高速だし,いい感じ.
2003-01-21 古い日記からの変換データ [長年日記] ▲
2003-01-20 古い日記からの変換データ [長年日記] ▲
_ Java ▲
java.util.SortedMap で失敗.a.compareTo(b) で比較してから最後に a.equlas(b) するものだと思ってたら,a.equals(b) == (a.compareTo(b)==0) でないといけなかった.比較してから最後にequalsするのは Hash の実装のほうで,そちらと勘違いしていたらしい.一貫性のない SortedMap の動作は保証されないので,結果としてコレクションに投入した compareTo が 0 だけれどequals でないようなオブジェクトがどんどん消されて,あやしげな動作となっていた.