- - PR -
複数キーのソートについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-17 21:15
はじめまして。
JAVAを初めて1ヶ月の超初心者です。 WebSphere5.1、Windows2000を利用してJAVAを作成しています。 配列にデータを取得してきてそのデータを複数のキーでソートするプログラムが思いつかずに 色々と検索をしてみたのですが見つからなく質問させていただきました。 ArrayList result; Public class resultRow{ String kumi; String namae; int bangou; } resultRow rRow = new ArrayList(resultRow); として作った配列にデータをDBから値を取得してきています。 つくられた配列に入っているデータのソートを kumi ↓ namae ↓ bangou の優先度でソートを行いたいのです。 まだプログラム初心者の私には過ぎた要望なのですが、 会社で開発をしなくてはいけなく、回りに聞く人もいずに八方ふさがりになっています。 お手数おかけしますが何卒よろしくお願いします。 間違っている部分があったら申し訳ありません。 配列作成はうまくいっています。 |
|
投稿日時: 2004-11-17 21:29
何がわからないのでしょうか?
単一のキーでのソートはできますか? できるのであればソートをかけたい項目順にソートするだけです。 |
|
投稿日時: 2004-11-17 21:59
インギ様
返答ありがとうございます。 基本的なもので申し訳ないのですがどのようなプログラムを書けばいいのかが分からなくて困っています。 int bangou;の単一のソートはできます。 複数ソートの前にStringのソートすら迷っている状態です。 文字コードの大小を調べて、自力で配列の入れ替えをするしかないでしょうか。 Stringもsortでソートできますでしょうか。 単一のソートは以下のように行っています。 Collections.sort(result, new Comparator() { public int compare(Object o1, Object o2) { resultRow first = (resultRow)o1; resultRow second = (resultRow)o2; return (first.bangou-second.bangou); } } ); もしよろしかったら、何か例文を教えて頂けないでしょうか。 図々しいお願い申し訳ありません。 |
|
投稿日時: 2004-11-17 22:34
勉強の為というならわかりますが、
なぜDBから取得したものをわざわざソートするのですか? べつにSQLでソートするだけだと思いますが。 |
|
投稿日時: 2004-11-17 22:51
かつのり様
SQLを5つほど発行して 寄せ集めたデータを最終的にソートして表示したいのです。 最終的に1つの配列にデータを入れてそれをソートしようと考えています。 説明が不十分で申し訳ありません。 |
|
投稿日時: 2004-11-17 23:07
そこまで出来ているならもう少しです。
Stringは、文字コードによる自然順序付け比較をしてくれるメソッドを もってますよ。String#compareTo(String)とか。あとはそのComparat orに、これによる比較を盛り込むだけです。 kumiで比較->戻り値が0だったらnamaeで比較->戻り値が0だったらbangouで比較 ですね。 問題その1 Unicodeの文字コード比較でよいのですか?漢字だった場合、ソート結果は意味 がなくないですか? ->解決法:Stringの順序付けの代わりに、java.text.Collatorによる順序付け を使用すると、ある程度解決できるかも。 問題その2 JavaプログラムとDBとの問い合わせを5回繰り返すオーバーヘッドがもったいな いので、DBがORDER BY句でやってくれるソート順でよいのなら、SQLを結合する ことを考えた方が良いかと。 |
|
投稿日時: 2004-11-17 23:26
シュン様
返答ありがとうございます。 それで明日早速やってみます。 入力されるデータは必ず英数字なので、Unicodeの比較で問題ないです。 SQLは他部署で考えられたもので、すでに認証会議を通っているものを使用するので 変更する事ができません・・・現状で頑張ってみます。 またこれで躓いた場合はよろしくお願いします。 |
1