• 締切済み

Javaのソートに関する質問です。

Javaのソートに関する質問です。 CSVから取得したデータの一つをキーとして降順にソートしたいのでしょうが、どのような方法が効果的でしょうか?関数が利用できるのであれば関数を使用したいのですが。。。 データの詳細を以下に記載します。 環境 JavaSE5.0 CSVデータ ※ソート条件 ・キー内容は「wwwwwwww-xxxxxxxx-yyyyyyyy-zzzzzzzz」という形式で、 「wwwwwwww」が1番、「xxxxxxxx」が2番、というように、左側の数値が優先されます。 (ソート前)キー内容 タイトル 11111111-22222222-33333333-4444444 テスト1 22222222-33333333-44444444-5555555 テスト2 11111111-00000000-22222222-3333333 テスト3 22222222-44444444-55555555-6666666 テスト4 (ソート後)キー内容 タイトル 11111111-00000000-22222222-3333333 テスト3 11111111-22222222-33333333-4444444 テスト1 22222222-33333333-44444444-5555555 テスト2 22222222-44444444-55555555-6666666 テスト4

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

かっこよく実装するなら class CSV { List<Recode> recodes; } class Recode implements Comparable{ String key; String value; public int compareTo(Object o) { if (!o instanceof Recode) { // 例外処理 } return key.compareTo( ((Recode)o).key); } } をという具合に、CSVの1レコードにComparableを定義して Collections.sort(recodes); って具合かしら。 List<Recode>の代わりにSortedSetを使ったりすると 勝手にソートされたりするわよ。 ちなみにRecodeクラスにComparableを実装せず Collections.sort(recodes, new Comparator(){~}); でソート条件を直接指定するのもありね。

  • amsun
  • ベストアンサー率0% (0/0)
回答No.1

データの桁数がすべて同じなら、そのままソートすることでソート後の結果が出るんじゃないかと思います。 11111111-22222222-33333333-4444444 11111111-00000000-22222222-3333333 一文字ごとに先頭から比較すると思うので、2つ目のデータの先頭で判断されてソートされるはず。 あとCollectionsクラスにいちをソートしてくれるメソッドがあります。

関連するQ&A