Alphabetische Sortierung eines String-Arrays in Java

Mohammad Irfan 12 Oktober 2023
  1. Sortieren eines String-Arrays ohne Verwendung integrierter Methoden in Java
  2. Sortieren eines String-Arrays mit der Methode stringArraySort() in Java
  3. Sortieren eines String-Arrays mit der Methode compareTo() in Java
  4. Sortieren eines String-Arrays mit der Methode Arrays.sort() in Java
  5. Sortieren eines String-Arrays in absteigender Reihenfolge in Java
  6. Sortieren eines String-Arrays durch Ignorieren der Groß-/Kleinschreibung in Java
  7. Sortieren eines String-Arrays in Java in alphabetischer Reihenfolge
Alphabetische Sortierung eines String-Arrays in Java

In diesem Tutorial wird erläutert, wie Sie String-Arrays in Java alphabetisch sortieren. Wir haben auch einige Beispielcodes aufgelistet, um Ihnen das Verständnis des Themas zu erleichtern.

Sortieren ist das Anordnen von Daten in einer bestimmten Reihenfolge. Wir können ganze Zahlen in aufsteigender oder absteigender Reihenfolge sortieren, oder wir können englische Zeichen oder Wörter in lexikographischer Reihenfolge sortieren.

Die lexikographische Reihenfolge ist die Reihenfolge, in der Wörter vorkommen würden, wenn sie in einem englischen Dictionary vorhanden wären. In diesem Handbuch zeigen wir Ihnen, wie Sie ein String-Array in Java sortieren.

Wir werden Strings in diesem Artikel mit Wörtern wie kleiner oder größer vergleichen. Ein String ist kleiner als der andere, wenn er in der lexikographischen Reihenfolge zuerst auftritt.

Außerdem gehen in der lexikographischen Reihenfolge alle Großbuchstaben den Kleinbuchstaben voran; Dies bedeutet, dass ein Wort, das mit Z beginnt, in einem sortierten Array vor einem Wort vorhanden ist, das mit a beginnt.

Sortieren eines String-Arrays ohne Verwendung integrierter Methoden in Java

Wir werden zunächst versuchen, unsere eigene Sortiermethode in Java zu implementieren. Wir erstellen eine Methode namens compareStrings(), die zwei Strings vergleicht und uns sagt, welcher kleiner oder größer ist.

Als nächstes vergleichen wir jeden String mit allen anderen im Array vorhandenen Strings, indem wir unsere Methode compareStrings() verwenden und diesen String an die richtige Position bringen. Der Algorithmus für die beiden Verfahren ist unten angegeben.

  1. Die Eingabe für diese Methode besteht aus zwei Zeichenketten und gibt einen ganzzahligen Wert zurück. Die Ausgabe dieser Methode ist wie folgt.
    • Wenn string1 > string2: positive ganze Zahl zurückgeben
    • Wenn string1 < string2: negative ganze Zahl zurückgeben
    • Wenn string1 == string2: Rückgabe 0
  2. Wir durchlaufen jedes Zeichen beider Strings gleichzeitig und vergleichen ihre Unicode-Werte. Wir verwenden die eingebaute Methode charAt(), um die Unicode-Werte zu erhalten. Diese Werte ermöglichen es uns, Zeichen zu vergleichen, als wären es normale ganze Zahlen.
  3. Wenn die Unicode-Werte für beide Zeichen gleich sind, gehen wir zum nächsten Zeichen jeder Zeichenkette über.
  4. Wenn sich die Unicode-Werte unterscheiden, geben wir die Differenz der Werte zurück.
  5. Die Schleife endet, wenn die Zeichen aus einer der Zeichenketten ausgehen.
  6. Wenn die beiden Strings außerhalb der Schleife unterschiedliche Längen haben, geben wir diese Differenz zurück. Wir tun dies, weil alle Zeichen des kleineren Strings am Anfang des längeren Strings stehen können. Zum Beispiel app und application. In diesem Fall kommt die längere Saite nach der kleineren.
  7. Wenn die Strings die gleiche Länge haben, geben wir einfach 0 zurück, was anzeigt, dass die beiden Strings gleich sind.

Sortieren eines String-Arrays mit der Methode stringArraySort() in Java

Diese Methode nimmt ein Array von Strings als Eingabe und gibt das sortierte Array zurück. Hier haben wir zwei Schleifen, eine in der anderen verschachtelt. Sie werden verwendet, um jedes Element des Arrays mit allen verbleibenden Elementen zu vergleichen.

Wir vergleichen sie mit unserer Methode compareString() für jedes Elementpaar innerhalb der Schleife. Wenn die erste Saite größer als die andere ist, tauschen wir ihre Positionen.

Der vollständige Code wird unten angezeigt.

public class Main {
  public static int compareStrings(String word1, String word2) {
    for (int i = 0; i < Math.min(word1.length(), word2.length()); i++) {
      if ((int) word1.charAt(i) != (int) word2.charAt(i)) // comparing unicode values
        return (int) word1.charAt(i) - (int) word2.charAt(i);
    }
    if (word1.length()
        != word2.length()) // smaller word is occurs at the beginning of the larger word
      return word1.length() - word2.length();
    else
      return 0;
  }
  public static String[] stringArraySort(String[] words) {
    for (int i = 0; i < words.length - 1; i++) {
      for (int j = i + 1; j < words.length; j++) {
        if (compareStrings(words[i], words[j]) > 0) // words[i] is greater than words[j]
        {
          String temp = words[i];
          words[i] = words[j];
          words[j] = temp;
        }
      }
    }
    return words;
  }
  public static void main(String[] args) {
    String[] arrToSort = {"apple", "oranges", "bananas", "Strawberry", "Blueberry"};
    String[] sortedArr = stringArraySort(arrToSort);

    for (int i = 0; i < sortedArr.length; i++) System.out.print(sortedArr[i] + " ");
  }
}

Ausgabe:

Blueberry Strawberry apple bananas oranges

Sortieren eines String-Arrays mit der Methode compareTo() in Java

Im obigen Code haben wir eine Methode geschrieben, die zwei Strings vergleicht und einen ganzzahligen Wert zurückgibt, um anzugeben, welcher String zuerst kommt, wenn sie in einem Dictionary vorhanden sind.

Java stellt uns eine eingebaute Methode namens compareTo() zur Verfügung, die uns diese Arbeit abnehmen kann. Die Syntax dieser Methode wird unten gezeigt.

string1.compareTo(string2)

Die Ausgabe dieser Methode ähnelt der Methode compareStrings(), die wir zuvor definiert haben.

  • Wenn string1 > string2: positive ganze Zahl zurückgeben
  • Wenn string1 < string2: negative ganze Zahl zurückgeben
  • Wenn string1 == string2: 0 zurückgeben

Der folgende Code demonstriert die Funktionsweise der Methode compareTo() in Java.

public class Main {
  public static void main(String[] args) {
    System.out.println("apple".compareTo("orange")); // apple < orange
    System.out.println("AAA".compareTo("aaa")); // AAA < aaa
    System.out.println("ZZZ".compareTo("aaa")); // ZZZ < aaa
    System.out.println("zzz".compareTo("aaa")); // zzz > aaa
    System.out.println("strawberry".compareTo("strawberry")); // strawberry == strawberry
  }
}

Ausgabe:

-14
-32
-7
25
0

Wir können die Methode compareTo() verwenden, um Arrays zu sortieren. Dieses Programm wird dem vorherigen sehr ähnlich sein. Der einzige Unterschied besteht darin, dass wir die Methode compareTo() anstelle der zuvor definierten Methode compareStrings() verwenden.

public class Main {
  public static String[] stringArraySort(String[] words) {
    for (int i = 0; i < words.length - 1; i++) {
      for (int j = i + 1; j < words.length; j++) {
        if (words[i].compareTo(words[j]) > 0) // words[i] is greater than words[j]
        {
          String temp = words[i];
          words[i] = words[j];
          words[j] = temp;
        }
      }
    }
    return words;
  }
  public static void main(String[] args) {
    String[] arrToSort = {"apple", "oranges", "bananas", "Strawberry", "Blueberry"};
    String[] sortedArr = stringArraySort(arrToSort);
    for (int i = 0; i < sortedArr.length; i++) System.out.print(sortedArr[i] + " ");
  }
}

Ausgabe:

 Blueberry Strawberry apple bananas oranges

Sortieren eines String-Arrays mit der Methode Arrays.sort() in Java

Es gibt eine noch einfachere Möglichkeit, Arrays zu sortieren. Dazu können wir die Methode sort() der Klasse Arrays verwenden. Die Syntax dieser Methode wird unten gezeigt.

Arrays.sort(stringArray)

Standardmäßig wird das Array in der natürlichen Reihenfolge (lexikografisch) sortiert. Wir können diese Reihenfolge jedoch ändern, indem wir andere Komparatoren angeben.

Ein Komparator ist eine Methode, um zwei Objekte zu vergleichen und uns mitzuteilen, welches kleiner oder größer als das andere ist. Die Methode sort() verwendet den Quicksort-Algorithmus und hat eine Zeitkomplexität von O(n*log(n)).

Der folgende Code zeigt das Standardverhalten der Methode sort().

import java.util.Arrays;
public class Main {
  public static void main(String[] args) {
    String[] arrToSort = {"apple", "oranges", "bananas", "Strawberry", "Blueberry"};
    Arrays.sort(arrToSort);
    for (int i = 0; i < arrToSort.length; i++) {
      System.out.print(arrToSort[i] + " ");
    }
  }
}

Ausgabe:

Blueberry Strawberry apple bananas oranges

Sortieren eines String-Arrays in absteigender Reihenfolge in Java

Um das Array in umgekehrter natürlicher oder absteigender Reihenfolge zu sortieren, können wir den Komparator reverseOrder() wie unten gezeigt verwenden.

import java.util.Arrays;
import java.util.Collections;

public class Main {
  public static void main(String[] args) {
    String[] arrToSort = {"apple", "oranges", "bananas", "Strawberry", "Blueberry"};
    Arrays.sort(arrToSort, Collections.reverseOrder());
    for (int i = 0; i < arrToSort.length; i++) {
      System.out.print(arrToSort[i] + " ");
    }
  }
}

Ausgabe:

oranges bananas apple Strawberry Blueberry

Sortieren eines String-Arrays durch Ignorieren der Groß-/Kleinschreibung in Java

Verwenden Sie dieses Codebeispiel unten, um ein Zeichenkettenarray in alphabetischer Reihenfolge festzulegen, die Groß-/Kleinschreibung des Zeichens jedoch zu ignorieren.

import java.util.Arrays;
public class Main {
  public static void main(String[] args) {
    String[] arrToSort = {"apple", "oranges", "bananas", "Strawberry", "Blueberry"};
    Arrays.sort(arrToSort, String.CASE_INSENSITIVE_ORDER); // case insensitive sort
    for (int i = 0; i < arrToSort.length; i++) {
      System.out.print(arrToSort[i] + " ");
    }
  }
}

Ausgabe:

apple bananas Blueberry oranges Strawberry

Sortieren eines String-Arrays in Java in alphabetischer Reihenfolge

Sortieren ist das Anordnen von Elementen in einer bestimmten Reihenfolge. Wir können ein String-Array in alphabetischer oder lexikographischer Reihenfolge sortieren. Java hat eine eingebaute Methode compareTo(), die verwendet werden kann, um zwei Strings zu vergleichen und festzustellen, welcher größer als der andere ist. Wir können diese Methode verwenden, um unseren Sortieralgorithmus zu schreiben.

Java hat auch die Methode Arrays.sort(), die ein String-Array sortieren kann. Wir können verschiedene Komparatoren für unsere Methode sort() verwenden, um die Array-Reihenfolge auf unterschiedliche Weise festzulegen.

Verwandter Artikel - Java String

Verwandter Artikel - Java Array