Existe-t-il un moyen natif de trier une chaîne en fonction de son contenu en java? Par exemple
String s = "edcba" -> "abcde"
toCharArray
suivi de Arrays.sort
suivi d'un appel au constructeur String:
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
String original = "edcba";
char[] chars = original.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
System.out.println(sorted);
}
}
EDIT: Comme le souligne Tackline, cela échouera si la chaîne contient des paires de substitution ou même des caractères composites (accent + e comme caractères séparés) etc. À ce stade, cela devient beaucoup plus difficile ... j'espère que vous n'en avez pas besoin :) De plus, il s'agit simplement de classer par ordinal, sans prendre en compte les majuscules, les accents ou quoi que ce soit d'autre.
sorted
est déjà unString
... qu'est-ce que vous attendez de lui faire appeltoString()
?char[] c = s.toCharArray(); Arrays.sort(c); String sorted = new String(c);
Non, il n'y a pas de méthode String intégrée. Vous pouvez le convertir en tableau de caractères, le trier à l'aide de Arrays.sort et le reconvertir en chaîne.
Ou, lorsque vous souhaitez traiter correctement des éléments spécifiques aux paramètres régionaux tels que les majuscules et les caractères accentués:
la source
Dans Java 8, cela peut être fait avec:
Une alternative légèrement plus courte qui fonctionne avec un flux de chaînes de longueur un (chaque caractère de la chaîne non triée est converti en chaîne dans le flux) est:
la source
Convertir en tableau de caractères → Trier → Reconvertir en chaîne :
la source
Une approche plus brute sans utiliser la méthode sort Arrays.sort. Ceci utilise le tri par insertion.
la source
Notez que cela ne fonctionnera pas comme prévu s'il s'agit d'une chaîne à casse mixte (elle mettra les majuscules avant les minuscules). Vous pouvez passer un comparateur à la méthode Sort pour changer cela.
la source
Procédure:
Extrait de code:
la source
Question: trier une chaîne en java
la source
la source
Sans utiliser les collections en Java:
Production:
la source