2015-03-05 1 views
1

donc je dois prendre une chaîne dans un tableau, mettre la chaîne dans un nouveau tableau tous les personnages, trier les caractères dans l'ordre alphabétique, alors je dois mettre les nouveaux caractères alphabétisés dans une nouvelle chaîne, puis l'imprimer.caractères alphabétiser dans une chaîne puis mettez les caractères alphabétisés dans une nouvelle chaîne?

Comment pourrais-je faire une méthode pour alphabétiser un tableau de caractères puis convertir le tableau à une chaîne?

+0

Pourriez-vous afficher un exemple d'entrée et de résultat attendu? – Pshemo

+0

Pourriez-vous nous montrer le code de ce que vous avez essayé jusqu'à présent? –

+0

Malheureusement, je suis loin de mon bureau en ce moment, je vais modifier ce que j'ai quand je reviendrai. –

Répondre

3

Je suppose que vous cherchez quelque chose comme ceci:

char[] a = ...; 
Arrays.sort(a); 
String s = new String(a); 
+0

Vous n'avez jamais expliqué comment convertir une chaîne en tableau char? –

+1

Cela ne faisait pas partie de la question. "Comment faire une méthode pour alphabétiser un tableau de caractères puis convertir le tableau en une chaîne?" – Bubletan

1
public static void main(String [] args) {   
    String str = "hello"; 
    char [] array = str.toCharArray(); 
    Arrays.sort(array); 
    String sortedStr = new String(array); 
    System.out.println(sortedStr); 
    } 
1
char[] array = yourString.toCharArry(); 
Arrays.sort(array); 
youNewString = new String(array); 
+0

Pourquoi le downvote? –

+0

Je ne l'ai pas downvote mais je devrais probablement avoir été un peu plus clair. Je sais comment convertir une chaîne en un tableau de caractères. Je cherche juste comment trier le tableau de caractères puis convertir le tableau de caractères alphabétique en une nouvelle chaîne. –

1

En Java 8:

String s = ... ; 
String sSorted = Stream.of(s.split("")) 
    .sorted() 
    .collect(Collectors.joining()); 
1

Si vous devez traiter avec des chaînes de cas mixtes, par exemple edcbaABCDEF, alors vous aurez besoin de faire des choses un peu différemment ...

Arrays.sort() dans les autres réponses ne traite que d'une valeur de caractère numérique, vous obtiendrez edcbaABCDEF => ABCDEFabcde

Tableaux .Sort (arr, comparateur) ne peut être utilisé avec des types d'enveloppe, à savoir le caractère, pas char, vous aurez donc besoin de l'envelopper d'abord.

Character [] wrapped = new Character[charArray.length]; 
int i = 0; 
for (char c : charArray) { 
    wrapped[i++] = c; 
} 

Ensuite sorte

Arrays.sort(wrapped, new Comparator<Character>() { 
    @Override 
    public int compare(Character o1, Character o2) { 
     return Character.compare(Character.toLowerCase(o1), 
       Character.toLowerCase(o2)); 
    } 
}); 

Convertir en une chaîne

i = 0; 
for (char c : wrapped) { 
    charArray[i++] = c; 
} 
System.out.println(new String(charArray)); 

==> AaBbCcDdEeF 

Cela peut être simplifiée en utilisant aide Apache Commons lang ArrayUtils.

String test = "edcbaABCDEF"; 
Character[] charArray = ArrayUtils.toObject(test.toCharArray()); 
Arrays.sort(charArray, new Comparator<Character>() { 
    @Override 
    public int compare(Character o1, Character o2) { 
     return Character.compare(Character.toLowerCase(o1), 
       Character.toLowerCase(o2)); 
    } 
}); 
System.out.println(new String(ArrayUtils.toPrimitive(charArray)));