So-net無料ブログ作成

javaの Arrays.sort にはまる [サーバー]

 先日サーバーの挙動に不審な点があり、調査していました。
 問題は、javaの Arrays.sort で、ソートできない時がある、と言うものです。

 ソートしたいのは、とあるオブジェクトの配列です。
 javaの場合、配列をソートするには、
 Arrays.sortを使えば、簡単にソートしてくれるはず・・・だったのですが、いくらやってもソートできません。
 ソートできる時もあれば、全くソートできない時もあります。中途半端なソートの時もあります。
 ソートしたい配列の要素数は 3600個ほど。オブジェクトのソートに必要なコンパレータは用意してあり。ソート時にそちらは正しく呼ばれているようです。なのに結果ソートできていない。
 例外処理にも飛んできません。コンパレータにトラップをかけても引っかかりません。catalina.outにも特に異常はありません。見た目は正常に処理しているように見えて、実はソートできていないのでした。

 いろいろと調べた結果、やっぱり落とし穴が待っていました。
 何のことはない、配列中に、null要素がいくつか混じっている場合があったのです。このときはソートできていないようでした。
 どうやら、Arrays.sortは、要素中にnullが混じっているとうまくソートできないようです。コンパレータでnullを処理するようにしてもだめでしたので、Arrays.sort内で落ちているのでしょう。
 でも、うまく処理できないのなら、例外を出して欲しかったです。プログラム上「成功しているかどうかは分からない」実装と言うのはいただけないですね。

 実社会でもそうですが、「仕事がうまくいかないときは、必ず報告を上げる」ことが必要です。そうすれば何らかの対策をとることが出来ますからね。「仕事がうまくいかないときは隠して何事もなかったかなのように振舞う」というのは最低です。そんな社員はいないほうがいいです。会社に損害を与えてしまいますから。
 残念ながら、実際の現場では「後者」のほうが圧倒的に多いです。で、事が露見した後で大変なことになる、と言うことを多く経験しています。特に、年代が若くなるにつれてその傾向が顕著になっているように感じられました。

 とりあえず、自前で sort をラッピングして、sort前に null 要素を取り除くようにしました。
 でも、本件以外にも実は出来ない場合が合って、例外すら上げてもらえないかもしれないと思うと、Arrays.sort を使うのはちょっと怖くなってきました。



店舗/事務所などでのBGMがご入り用な方は、ぜひ一度ご検討ください。下記ページで営業しております。試聴/問い合わせ/申し込みなども受け付けております。インターネットだけでご利用いただけます。

お申し込み後にばっくれるのだけは勘弁してください。

 youon_logo.png
業務用/店舗用インターネットBGM配信 湧音
http://www.YouOn.info/
JASRAC許諾第9011941001Y31015号


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。