Trier des chaînes de caractères en Java à l'aide de Arrays.sort()

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

En Java, il n'y a pas de méthode unique dans la classe String à des fins de tri. Cependant, nous pouvons utiliser le fait qu'un tableau de caractères peut être facilement trié à l'aide de divers algorithmes. Il existe plusieurs façons de trier des chaînes de caractères en Java, telles que l'utilisation de Arrays.sort(), de Comparator dans Arrays.sort(), ou des algorithmes de tri couramment utilisés comme Selection Sort et Bubble Sort. Dans ce laboratoire, nous allons explorer comment trier une chaîne de caractères en Java à l'aide de la méthode Arrays.sort().


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/BasicSyntaxGroup -.-> java/output("Output") java/StringManipulationGroup -.-> java/strings("Strings") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/DataStructuresGroup -.-> java/sorting("Sorting") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/for_loop -.-> lab-117456{{"Trier des chaînes de caractères en Java à l'aide de Arrays.sort()"}} java/output -.-> lab-117456{{"Trier des chaînes de caractères en Java à l'aide de Arrays.sort()"}} java/strings -.-> lab-117456{{"Trier des chaînes de caractères en Java à l'aide de Arrays.sort()"}} java/arrays -.-> lab-117456{{"Trier des chaînes de caractères en Java à l'aide de Arrays.sort()"}} java/arrays_methods -.-> lab-117456{{"Trier des chaînes de caractères en Java à l'aide de Arrays.sort()"}} java/sorting -.-> lab-117456{{"Trier des chaînes de caractères en Java à l'aide de Arrays.sort()"}} java/string_methods -.-> lab-117456{{"Trier des chaînes de caractères en Java à l'aide de Arrays.sort()"}} end

Écrire le code

Dans cette étape, nous allons écrire le programme Java pour trier une chaîne de caractères à l'aide de la fonction Arrays.sort(). Le code prend une chaîne de caractères d'entrée, la convertit en un tableau de caractères, trie le tableau à l'aide de la fonction Arrays.sort() puis le convertit à nouveau en une chaîne de caractères.

import java.util.Arrays;

public class SortString {
    public static void main(String[] args) {
        String originalString = "The quick brown fox jumps over the lazy dog";
        String sortedString = "";
        char[] tempArr = originalString.toCharArray();   // convertit la chaîne en un tableau de caractères
        Arrays.sort(tempArr);   // trie le tableau de caractères
        sortedString = new String(tempArr);   // convertit le tableau de caractères trié en une chaîne de caractères
        System.out.println("Chaîne d'origine : " + originalString);
        System.out.println("Chaîne triée : " + sortedString);
    }
}

Compiler et exécuter le code

Ouvrez le terminal et accédez au répertoire ~/project. Compilez le programme Java à l'aide de la commande suivante :

javac SortString.java

Exécutez le programme Java à l'aide de la commande suivante :

java SortString

La sortie du programme sera la suivante :

Chaîne d'origine : The quick brown fox jumps over the lazy dog
Chaîne triée :    Tabcdeeefghhijklmnoooopqrrstuuvwxyz

Implémenter un tri insensible à la casse

En Java, la méthode Arrays.sort() compare les caractères en utilisant leurs valeurs Unicode. Pour trier une chaîne de caractères sans tenir compte de la casse, nous pouvons modifier l'algorithme de tri en utilisant un Comparator. Dans cette étape, nous allons modifier notre code Java précédent pour trier la chaîne de caractères sans tenir compte de la casse.

import java.util.Arrays;
import java.util.Comparator;

public class SortString {
    public static void main(String[] args) {
        String originalString = "The quick brown fox jumps over the lazy dog";
        String sortedString = "";
        Character[] tempArr = toCharacterArray(originalString.toLowerCase());   // convertit la chaîne en minuscules en un tableau de caractères
        Arrays.sort(tempArr, new Comparator<Character>() {   // trie avec un comparateur insensible à la casse
            @Override
            public int compare(Character c1, Character c2) {
                return c1.compareTo(c2);
            }
        });
        StringBuilder sb = new StringBuilder(tempArr.length);   // crée un objet StringBuilder
        for (Character c : tempArr) {
            sb.append(c.charValue());   // ajoute les caractères triés à l'objet StringBuilder
        }
        sortedString = sb.toString();   // convertit l'objet StringBuilder en une chaîne de caractères
        System.out.println("Chaîne d'origine : " + originalString);
        System.out.println("Chaîne triée : " + sortedString);
    }

    // méthode pour convertir une chaîne en un tableau de caractères
    private static Character[] toCharacterArray(String str) {
        Character[] arr = new Character[str.length()];
        for (int i = 0; i < str.length(); i++) {
            arr[i] = str.charAt(i);
        }
        return arr;
    }
}

Compiler et exécuter le code mis à jour

Compilez le programme Java mis à jour à l'aide de la commande suivante :

javac SortString.java

Exécutez le programme Java à l'aide de la commande suivante :

java SortString

La sortie du programme sera la suivante :

Chaîne d'origine : The quick brown fox jumps over the lazy dog
Chaîne triée :    abcdeeefghhijklmnoooopqrrsttuuvwxyz

Implémenter le tri en utilisant la méthode traditionnelle

Dans cette étape, nous allons implémenter le tri sur un tableau de caractères en utilisant une méthode traditionnelle avec des boucles imbriquées. L'algorithme comparera chaque caractère avec les caractères situés à sa droite et échangera les caractères si le caractère de droite est plus petit que le caractère actuel.

import java.util.Arrays;

public class SortString {
    public static void main(String[] args) {
        String originalString = "The quick brown fox jumps over the lazy dog";
        String sortedString = "";
        char[] tempArr = originalString.toCharArray();   // convertit la chaîne en un tableau de caractères
        int n = tempArr.length;
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                if (tempArr[i] > tempArr[j]) {
                    char temp = tempArr[i];
                    tempArr[i] = tempArr[j];
                    tempArr[j] = temp;
                }
            }
        }
        sortedString = new String(tempArr);   // convertit le tableau de caractères trié en une chaîne de caractères
        System.out.println("Chaîne d'origine : " + originalString);
        System.out.println("Chaîne triée : " + sortedString);
    }
}

Compiler et exécuter le code mis à jour

Compilez le programme Java mis à jour à l'aide de la commande précédente :

javac SortString.java

Exécutez le programme Java à l'aide de la commande suivante :

java SortString

La sortie du programme sera la suivante :

Chaîne d'origine : The quick brown fox jumps over the lazy dog
Chaîne triée :    Tabcdeeefghhijklmnoooopqrrstuuvwxyz

Sommaire

Dans ce laboratoire, nous avons appris à trier une chaîne de caractères en Java à l'aide de la méthode Arrays.sort(). Nous avons également appris à implémenter un tri insensible à la casse à l'aide de Comparator et un tri traditionnel à l'aide de boucles imbriquées.