- PR -

Javaで複数の要素を持つ配列の一つをソートしたいときの方法

投稿者投稿内容
キキ
常連さん
会議室デビュー日: 2005/08/31
投稿数: 29
投稿日時: 2005-08-31 19:05
件名ではうまく説明できないのですが、

0831,太郎,学生
1005,花子,教師
0406,次郎,講師

上のような複数要素を持つデータで先頭の日付(1個目の,まで)でソートしたり、次の項目でソートしたりしたいのですが、なにか言い方法はないでしょうか?
アドバイスお願いします。
さる
ぬし
会議室デビュー日: 2005/07/14
投稿数: 276
お住まい・勤務地: 実家戻ったw
投稿日時: 2005-08-31 19:22
APIは読みましたか?

さすがにちと酷いかなと思い修正w
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Arrays.html
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Collections.html
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Comparator.html

[ メッセージ編集済み 編集者: さる 編集日時 2005-08-31 19:27 ]
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-08-31 19:22
"0831,太郎,学生"のようなカンマ区切り文字列が配列の各要素に1つずつ
入っているという理解で正しいでしょうか?
java.util.Comparator , Arrays.Sort()等で検索すると幸せになれるかも.

[追記]
書きすぎたのでちょっと削除
_________________
Future Is What We Are!

[ メッセージ編集済み 編集者: 117 編集日時 2005-08-31 19:26 ]
キキ
常連さん
会議室デビュー日: 2005/08/31
投稿数: 29
投稿日時: 2005-08-31 20:19
さっそくの返信ありがとうございます。
でも、お二人ともなにか苦情みたいなことを書いていたようですが(未確認)、自分としてはいろいろ悩んだ結果わからなくて聞いているのですが…。

書き足りなかったようなので追加します。
自分が試した方法は、
1、「,」づつ読み取り並べ替える。
2、読み取った文字をCollections.sort()で並べ替える。
3、読み取った文字が含まれる配列を2の結果の用に並べ替える。
で、結果、たとえば日付でソートした場合、
0406,次郎,講師
0831,太郎,学生
1005,花子,教師
となり、他の項目も一緒についてきて欲しいのです。
他の項目はソートを判断する文字列には含まないけど、並べ替えるときは一緒に並べ替えられる、そんな方法でいい方法がないか聞きたかったのです。

ソートの手法は自分が知らなかったのも含めてアドバイスありがとうございました。
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-08-31 22:36
余計なこと書いたから誤解されてますな
苦情ではなく解法(らしきもの)を書いてみたんですが,データ構造を
引用:

"0831,太郎,学生"のようなカンマ区切り文字列が配列の各要素に1つずつ
入っているという理解で正しいでしょうか?


と推測した上でのものなので正確さに欠けると思い消しました.お気に障ったら失礼しました.
↓以下 そのとき消した内容+α

「複数の要素を持つ配列」ということですが,配列の要素には"0831,太郎,学生"のような文字列が入ってるという認識でよいのでしょうか? だとすれば
java.util.Comparatorを実装した専用の比較クラスを作り、「文字列をカンマで分割し,分割文字列を比較する」compare()メソッドを実装し、Arrays.Sort()のパラメータに配列と一緒に渡してやる ということでいけるのではないでしょうか.

普通(?)のやり方として思いつくのは,番号・コード・名前をフィールドに持つクラスとそのクラス用のComparatorを作って文字列をもとにインスタンスを作って配列に格納,というところですが.
_________________
# Future Is On Fire !
キキ
常連さん
会議室デビュー日: 2005/08/31
投稿数: 29
投稿日時: 2005-08-31 22:40
ありがとうございます!
lengthでいちいち長さを取ってたので、その方法試してみます。

お互い勘違いしちゃったみたいですね^^;
感謝感謝です。
さる
ぬし
会議室デビュー日: 2005/07/14
投稿数: 276
お住まい・勤務地: 実家戻ったw
投稿日時: 2005-09-01 10:26
引用:

でも、お二人ともなにか苦情みたいなことを書いていたようですが(未確認)、自分としてはいろいろ悩んだ結果わからなくて聞いているのですが…。



おろ、苦情を書いてはいないんですけどねぇ〜w
APIは読みましたか? って'だけ'書いてたから修正はリンクを貼っただけ。

引用:

lengthでいちいち長さを取ってたので、その方法試してみます。



ちと、この一文が気になりましたが
文字列をカンマで分割できました?
CSVって単語も出てこなかったし、気になるw
キキ
常連さん
会議室デビュー日: 2005/08/31
投稿数: 29
投稿日時: 2005-09-01 11:28
えと、私の勘違いです(汗)すみませんm(_ _)m

csv形式で保存されているファイルから読み出して、データをソートしようとしていたのです。
まだいぢいぢしてる途中です。
完全理解はしてないですが、文字列をカンマで分割はできました。

それぞれの要素でソートはできているので、今まとめ中です。

スキルアップ/キャリアアップ(JOB@IT)