2013-10-19 14 views
10

Javaで文字列をアルファベット順にソートする場合は、次のようにします。 大文字と小文字の後には、 AaBbCcDdEeFfGgが続きます。 私はAbaCを返した場合、私はAabC ありがとう!アルファベット順の文字列をソートする方法Java

+7

これは、新しい年の希望のために早期にすぎだ、その時まで、あなたには、いくつかを表示する必要があります努力。これまでに何を試しましたか? –

答えて

13

あなたが最初の配列に文字を入れる場合は、Arrays.sortを使用してこれを行うことができます。 (これは、カスタムの大文字と小文字を区別しないコンパレータを使用するためにCharacterのオブジェクトではなく、charプリミティブの配列でなければなりません。)

// put the characters into an array 
Character[] chars = new Character[str.length()]; 
for (int i = 0; i < chars.length; i++) 
    chars[i] = str.charAt(i); 

// sort the array 
Arrays.sort(chars, new Comparator<Character>() { 
    public int compare(Character c1, Character c2) { 
     int cmp = Character.compare(
      Character.toLowerCase(c1.charValue()), 
      Character.toLowerCase(c2.charValue()) 
     ); 
     if (cmp != 0) return cmp; 
     return Character.compare(c1.charValue(), c2.charValue()); 
    } 
}); 

// rebuild the string 
StringBuilder sb = new StringBuilder(chars.length); 
for (char c : chars) sb.append(c); 
str = sb.toString(); 
+0

これは、UTF-16サロゲートを分割します。 –

2

文字列を文字配列に変換し、並べ替えの各文字のint値を比較します。必要

方法: String.toCharArray();

7

あなたはCollections.sortを探してから、このようにしてみてくださいしようとするかもしれない: -

Collections.sort(caps, String.CASE_INSENSITIVE_ORDER); 

このような何か: -

private static Comparator<String> ALPHA_ORDER = new Comparator<String>() { 
    public int compare(String str1, String str2) { 
     int x = String.CASE_INSENSITIVE_ORDER.compare(str1, str2); 
     if (x== 0) { 
      x= str1.compareTo(str2); 
     } 
     return x; 
    } 
}; 

Collections.sort(list, ALPHA_ORDER); 

EDIT: -

このようにしてみてください文字列にアルファベット順にソートするための

: -

Collator col = Collator.getInstance(new Locale("en", "EN")); 
String s = "AbaC"; 
String[] s1= s.split(""); 
Arrays.sort(s1, col); 
String sorted = ""; 
for (int i = 0; i < s1.length; i++) 
{ 
    sorted += s1[i]; 
} 
System.out.println(sorted); 
+1

OPは文字列のリストではなく文字列内の文字をソートする必要があります。 – Boann

+0

これは文字列の文字列を回転させる問題です。それは簡単な部分です。 –

+0

@Boann: - 私の答えを更新しました。それはより良いことを望みますか? –

関連する問題