Das Sortieren von Strings in Java mit Arrays.sort()

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In Java gibt es keine einzelne Methode innerhalb der String-Klasse für Sortierungszwecke. Wir können jedoch davon Gebrauch machen, dass ein Array von Zeichen mit verschiedenen Algorithmen leicht sortiert werden kann. Es gibt mehrere Möglichkeiten, Strings in Java zu sortieren, wie zum Beispiel die Verwendung von Arrays.sort(), Comparator in Arrays.sort() oder gängige Sortieralgorithmen wie Selection Sort und Bubble Sort. In diesem Lab werden wir untersuchen, wie man einen String in Java mit der Arrays.sort()-Methode sortiert.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) 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{{"Das Sortieren von Strings in Java mit Arrays.sort()"}} java/output -.-> lab-117456{{"Das Sortieren von Strings in Java mit Arrays.sort()"}} java/strings -.-> lab-117456{{"Das Sortieren von Strings in Java mit Arrays.sort()"}} java/arrays -.-> lab-117456{{"Das Sortieren von Strings in Java mit Arrays.sort()"}} java/arrays_methods -.-> lab-117456{{"Das Sortieren von Strings in Java mit Arrays.sort()"}} java/sorting -.-> lab-117456{{"Das Sortieren von Strings in Java mit Arrays.sort()"}} java/string_methods -.-> lab-117456{{"Das Sortieren von Strings in Java mit Arrays.sort()"}} end

Schreiben des Codes

In diesem Schritt werden wir das Java-Programm schreiben, um einen String mit der Arrays.sort()-Funktion zu sortieren. Der Code nimmt einen Eingabestring entgegen, konvertiert ihn in ein Zeichenarray, sortiert das Array mit der Arrays.sort()-Funktion und konvertiert es anschließend wieder in einen String.

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();   // konvertiert String in Zeichenarray
        Arrays.sort(tempArr);   // sortiert das Zeichenarray
        sortedString = new String(tempArr);   // konvertiert das sortierte Zeichenarray in einen String
        System.out.println("Original String: " + originalString);
        System.out.println("Sorted String: " + sortedString);
    }
}

Kompilieren und Ausführen des Codes

Öffnen Sie das Terminal und navigieren Sie zum Verzeichnis ~/project. Kompilieren Sie das Java-Programm mit dem folgenden Befehl:

javac SortString.java

Führen Sie das Java-Programm mit dem folgenden Befehl aus:

java SortString

Die Ausgabe des Programms wird wie folgt sein:

Original String: The quick brown fox jumps over the lazy dog
Sorted String:    Tabcdeeefghhijklmnoooopqrrstuuvwxyz

Implementieren einer case-insensitiven Sortierung

In Java vergleicht die Arrays.sort()-Methode Zeichen anhand ihrer Unicode-Werte. Um einen String ohne Berücksichtigung der Groß-/Kleinschreibung zu sortieren, können wir den Sortieralgorithmus mit einem Comparator modifizieren. In diesem Schritt werden wir unseren vorherigen Java-Code bearbeiten, um den String ohne Berücksichtigung der Groß-/Kleinschreibung zu sortieren.

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());   // konvertiert den String in Kleinbuchstaben und in ein Character-Array
        Arrays.sort(tempArr, new Comparator<Character>() {   // sortiert mit einem case-insensitiven Comparator
            @Override
            public int compare(Character c1, Character c2) {
                return c1.compareTo(c2);
            }
        });
        StringBuilder sb = new StringBuilder(tempArr.length);   // erstellt ein StringBuilder-Objekt
        for (Character c : tempArr) {
            sb.append(c.charValue());   // fügt die sortierten Zeichen dem StringBuilder-Objekt hinzu
        }
        sortedString = sb.toString();   // konvertiert das StringBuilder-Objekt in einen String
        System.out.println("Original String: " + originalString);
        System.out.println("Sorted String: " + sortedString);
    }

    // Methode zum Konvertieren eines Strings in ein Character-Array
    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;
    }
}

Kompilieren und Ausführen des aktualisierten Codes

Kompilieren Sie das aktualisierte Java-Programm mit dem folgenden Befehl:

javac SortString.java

Führen Sie das Java-Programm mit dem folgenden Befehl aus:

java SortString

Die Ausgabe des Programms wird wie folgt sein:

Original String: The quick brown fox jumps over the lazy dog
Sorted String:    abcdeeefghhijklmnoooopqrrsttuuvwxyz

Implementieren der Sortierung mit der traditionellen Methode

In diesem Schritt werden wir die Sortierung eines Zeichenarrays mit einer traditionellen Methode mit geschachtelten Schleifen implementieren. Der Algorithmus wird jedes Zeichen mit den Zeichen rechts davon vergleichen und die Zeichen tauschen, wenn das Zeichen rechts kleiner als das aktuelle Zeichen ist.

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();   // konvertiert String in Zeichenarray
        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);   // konvertiert das sortierte Zeichenarray in einen String
        System.out.println("Original String: " + originalString);
        System.out.println("Sorted String: " + sortedString);
    }
}

Kompilieren und Ausführen des aktualisierten Codes

Kompilieren Sie das aktualisierte Java-Programm mit dem vorherigen Befehl:

javac SortString.java

Führen Sie das Java-Programm mit dem folgenden Befehl aus:

java SortString

Die Ausgabe des Programms wird wie folgt sein:

Original String: The quick brown fox jumps over the lazy dog
Sorted String:    Tabcdeeefghhijklmnoooopqrrstuuvwxyz

Zusammenfassung

In diesem Lab haben wir gelernt, wie man in Java einen String mit der Arrays.sort()-Methode sortiert. Wir haben auch gelernt, wie man eine case-insensitive Sortierung mit Comparator und eine traditionelle Sortierung mit geschachtelten Schleifen implementiert.