Javaプログラムの不具合を解析していた時の事です。
不具合の内容は『ソート順が正しくない』というモノでした。
SQLをチェックしたところORDER BY句でカラム指定が一部誤っていたのですが、結果にそれほどの影響はありません。
SQLで取得した結果はHashMapに格納され、その後プログラムでソートを行っているような場所もありませんでした。
原因はHashMapだった!
静的解析だけではどうにもならなかったので、動かしてみる事に。
するとSQLで取得した結果は意図する通りだったものの、HashMapに格納された段階でソート順が崩れていることに気付きました。
「え?putした値から格納されていくもんじゃないの?」
調べてみたところ、どうやらHashMapは『順序を保持しない』ということでした。
HashMapをLinkedHashMapに置換してみたところ、SQLの結果がそのまま格納されることを確認。
まとめ
もしかしたら基礎中の基礎なのかもしれませんが、ハマりましたね。
以上です。
コメントを残す