いつもお世話になっています。ArrayListなどをソートする際に、Comparatorインターフェースを実装したクラスを利用して、辞書順や数値順などでソートすることは出来ますよね。これを任意の単語の順番にソートするにはどのようにすればよいのでしょうか。つまり、下記例において、文字列順ではなくて、"ONE", "TWO", "THREE", "FOUR"の順番にソートしたいのです。
ArrayList list = new ArrayList();
list.add("THREE");
list.add("ONE");
list.add("FOR");
list.add("TWO");
やはりcompare()メソッド内で総当り的に比較するしかないのでしょうか。
開発環境はJDK1.4です。事情により返答が遅れてしまうかもしれませんが、どうぞ宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
java5 なら typesafe ENUM で順列も記述順でcompareTo が使えるそうなんですが。
1.4であれば、hash map のキーに文字列、値に順列値(int)を定義しておいて、キーから値を取り出しての比較というのはどうですか?
最初に定義したもの以外は比較できないのは、No3で御提唱の、indexofと根本的には変わらないかもしれませんが。
メモリーと速度問題でどちらをとるかといったところかな。
ご返答ありがとうございます。typesafe ENUMとは初耳です。Java 5.0は利用できませんが、調べてみようと思います。
StringでindexOfを利用するのと、HashMap等を利用するのではどちらが効率的なのかは調査してみないといけませんね。
No.2
- 回答日時:
一つの案ですが。
compareメソッドで、String checkdata = "ONE TWO THREE FOUR FIVE...以下略...";
みたいなStringを用意しておき、indexOfで最初に登場する位置のint値を調べて比較する、というのはいかがでしょう?
ご返答ありがとうございます。確かにこうした方法も出来そうですね。ただ毎回Stringを検索するのでパフォーマンスが若干気になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Excel(エクセル) Excelの50音順ソートを全ての行列に適用するには? 4 2022/12/05 11:28
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- C言語・C++・C# [至急]Project Euler:#17Number letter countsコード入力出力解説 2 2022/09/24 02:46
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- Java Java配列の問題を教えてください。 乱数で20個出力し、最大、最小、合計、平均を求め、更に昇順にソ 3 2023/07/10 18:32
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- JavaScript jsonテキストデータの並び替えができるサービスを教えてください 2 2022/08/05 20:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコード件数の表示
-
abstract と static を一緒に付...
-
Java初級 引数に適用できません
-
readLine()ではじめから読み直...
-
なぜprotected overrideなのか
-
Google Apps Script で getRang...
-
public static void main (Stri...
-
C# 点の描き方をおしえてくだ...
-
Jakarta POI での、excelのシ...
-
String.containsの反対機能はあ...
-
クラスを継承した際のコード自...
-
C言語での文字列より値を抜き出す
-
StringBufferからStringへキャ...
-
Fileの読み取り専用の解除
-
C# でメソッドに送られてきたOb...
-
Java初心者です、エラーの意味...
-
ArrayList の継承について(初...
-
YYYYMMDD書式の日付に対する適...
-
別クラスのmainメソッドの実行
-
クラスを作るとメソッドの数が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
なぜprotected overrideなのか
-
Strutsでチェックボックスの値...
-
Google Apps Script で getRang...
-
abstract と static を一緒に付...
-
C# 点の描き方をおしえてくだ...
-
レコード件数の表示
-
public static void main (Stri...
-
StringBufferからStringへキャ...
-
YYYYMMDD書式の日付に対する適...
-
C# でメソッドに送られてきたOb...
-
シェルスクリプトからのJavaメ...
-
C# の ByVal と ByRef について
-
Fileの読み取り専用の解除
-
CSVから読み込んだデータの保持...
-
メソッドの引数に指定されてい...
-
javaに"search"という関数 or ...
-
Javaのメモリの管理
-
Java初心者です、エラーの意味...
おすすめ情報