電子書籍の厳選無料作品が豊富!

ArrayListに登録した文字列を五十音順にソートしようと思いComparator を使用して
以下のようなサンプルプログラムを作ってみました。
ところが想定していたような {赤ちゃん、富士山、山口県}とはならず
{富士山、山口県、赤ちゃん} というような結果になりました。
compare() の戻り値の部分を return ((String)arg1).compareTo((String)arg0);
に変更しても{赤ちゃん、山口県、富士山} となり辞書の並びとは異なる結果になりました。
辞書順に並べるにはなにかよい方法はありますでしょうか。


public class compareTest {

public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();

String a = "赤ちゃん";
String b = "山口県";
String c = "富士山";

array.add(a);
array.add(b);
array.add(c);

for(int i=0;i<array.size();i++) {
System.out.println("ソート前=" + array.get(i));
}

Collections.sort(array, new testComp());

for(int i=0;i<array.size();i++) {
System.out.println("ソート後=" + array.get(i));
}
}
}


public class testComp implements Comparator {
public int compare(Object arg0, Object arg1) {
return ((String)arg0).compareTo((String)arg1);
}
}

A 回答 (4件)

アカちゃん,フジサン,ヤマグチケンと発音するのが正しくて,


セキちゃん,トミシヤマ,サンコウガタと読むのは正しくない。
そんな情報が{赤ちゃん、富士山、山口県}という文字の中に含まれていると想定するのが変です。

ふりがなデータを別に自前で用意するか,ふりがなデータを返してくれるサービスを利用するか,あたりで解決させる問題でしょう。
http://developer.yahoo.co.jp/webapi/jlp/furigana …
    • good
    • 0

>#3



日本語版Javadoc の読み方によっては誤解するかもしれない。

辞書って言葉利用してるから。
    • good
    • 0

そもそも漢字から音がわかると思う方がおかしい.



苗字でも
「東海林」と「高田」のどっちが前か
って判断できないよね.
    • good
    • 0

compaleTo の辞書は文字コード辞書ですよ。



四月朔日
四月二日
五月三日

を並べ替えた場合

四月二日(しがつふつか)
五月三日(ごがつみっか)
四月朔日(わたぬき)

という風にならないはずです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!