読者です 読者をやめる 読者になる 読者になる

Java

Java7のソートにバグがあるの初めて知った。
Listのソートをする際にComparator使うやり方で、

Collections.sort(rbiTop10, new RbiComparator());
Collections.reverse(rbiTop10);

Collections.sortを使うと
Comparison method violates its general contract!
というエラーが返される。
調べてみたら既知のバグらしいが...。
http://blog.satotaichi.info/timsort-was-broken/
回避方法はいくつか試したけどJDKを6に落とせばバージョンが古いと怒られ...。
Collections.sortでも必ずエラーとなるわけではなく、
上記コードの前に要素数が同じソートをやっているが何も起こらずじまい。
とりあえず怖いので使わないことに越したことはないかと。
最悪自前でインデックスソートとかなら書けるはず...ずいぶん使ってないけど。
SQLでorder byすることもできなくはないけど1ページで同じ結果を複数用意するのに
何本もSQLを流していいものか...。