153 votes

Trier une seule chaîne de caractères en Java

Existe-t-il un moyen natif de trier une chaîne de caractères par son contenu en java ? Par exemple

String s = "edcba"  ->  "abcde"

15voto

amit Points 4092
    String a ="dgfa";
    char [] c = a.toCharArray();
    Arrays.sort(c);
    return new String(c);

Notez que cette méthode ne fonctionnera pas comme prévu s'il s'agit d'une chaîne de caractères à casse mixte (elle mettra les majuscules avant les minuscules). Vous pouvez passer un comparateur à la méthode Sort pour changer cela.

4voto

rashedcs Points 976

Procédure :

  1. Tout d'abord, convertissez la chaîne de caractères en tableau de caractères
  2. Ensuite, triez le tableau de caractères
  3. Convertir le tableau de caractères en chaîne de caractères
  4. Imprimez la chaîne de caractères

Extraits de code :

    String input = "world";
    char[] arr = input.toCharArray();
    Arrays.sort(arr);
    String sorted = new String(arr);
    System.out.println(sorted);

2voto

Soudipta Dutta Points 109

Question : trier une chaîne de caractères en java

public class SortAStringInJava {
    public static void main(String[] args) {

        String str = "Protijayi";
// Method 1
        str = str.chars() // IntStream
                .sorted().collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append).toString();

        System.out.println(str);
        // Method 2
        str = Stream.of(str.split(" ")).sorted().collect(Collectors.joining());
        System.out.println(str);
    }
}

1voto

Peng Points 129
str.chars().boxed().map(Character::toString).sorted().collect(Collectors.joining())

ou

s.chars().mapToObj(Character::toString).sorted().collect(Collectors.joining())

ou

Arrays.stream(str.split("")).sorted().collect(Collectors.joining())

1voto

Jens Piegsa Points 2207

Une solution qui utilise l'API Stream et gère également les caractères supplémentaires Unicode :

public static String sort(final String s) {
    return s.codePoints()
            .sorted()
            .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
            .toString();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X