2013-10-19 27 views
10

Ich möchte eine Zeichenkette in JAVA alphabetisch sortieren, wie folgt Großbuchstabe und Kleinbuchstabe folgte AaBbCcDdEeFfGg. zum Beispiel, wenn ich AbaC setzen mich zurück AabC danke !!wie man eine Zeichenkette alphabetisch sortiert java

+7

Es ist zu früh für neue Jahre wünscht, bis zu diesem Zeitpunkt werden Sie einige zeigen müssen Anstrengung. Was hast du bisher versucht? –

Antwort

13

Sie können dies tun Arrays.sort verwenden, wenn Sie die Zeichen in ein Feld setzen. (Es muss ein Array von Character Objekten anstatt char Primitiven sein, um ein benutzerdefiniertes Groß- und Kleinschreibung Komparator zu verwenden.)

// 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

Dadurch werden UTF-16-Surrogate geteilt. –

2

Drehen Sie die Zeichenfolge in ein Zeichenarray und vergleichen Sie dann die int-Werte jedes Zeichens in Ihrer Sortierung.

Methoden benötigt: String.toCharArray();

7

Sie versuchen, für Collections.sort aussehen kann und dann so versuchen: -

Collections.sort(caps, String.CASE_INSENSITIVE_ORDER); 

Etwas wie folgt aus: -

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: -

Für alphabetisch in einer Zeichenfolge versuchen, wie diese Sortierung: - erste

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 möchte Zeichen in Strings sortieren, nicht eine Liste von Strings. – Boann

+0

Um die Zeichenfolge in einer Liste von Zeichen zu drehen, das ist der triviale Teil. –

+0

@Boann: - Meine Antwort aktualisiert. Hoffe das macht es besser? –

Verwandte Themen