Strings alphabetisch in Java vergleichen

Rupam Yadav 12 Oktober 2023
  1. Strings alphabetisch vergleichen mit compareTo()
  2. Strings auf traditionelle Weise alphabetisch vergleichen
Strings alphabetisch in Java vergleichen

Es gibt mehrere Möglichkeiten, zwei oder mehr Zeichenketten in Java zu vergleichen, aber wenn Sie die Zeichenketten lexikografisch (alphabetisch) vergleichen möchten, ist hier der Artikel für Sie. Die lexikographische Reihenfolge folgt der Wortanordnung in einem Dictionary. Unten haben wir Beispiele, die zwei Möglichkeiten zeigen, Zeichenketten in Java alphabetisch zu vergleichen.

Strings alphabetisch vergleichen mit compareTo()

Im Beispiel vergleichen wir mehrere Strings, um zu sehen, ob die Ergebnisse korrekt sind. Die Methode compareTo() wird mit der Klasse String geliefert und kann daher mit einem beliebigen String aufgerufen werden, um ihn mit einem anderen String zu vergleichen. Unten vergleichen wir s1 mit s2, s3 mit s4, s5 mit s6 und so weiter.

Wenn wir die Strings mit compareTo() vergleichen, gibt diese Methode einen int-Wert zurück, der uns sagt, wo Strings davor oder danach stehen sollen oder ob sie gleich sind. Vergleichen wir zum Beispiel s1 mit dem Wert apple mit s2 mit dem Wert orange mit s1.compare(s2), erhält die Funktion comparedResult eine negative ganze Zahl - dies bedeutet, dass die s1-Wert kommt vor s2.

Wenn comparedResult eine positive ganze Zahl erhält, wie beim Vergleich von s3 mit s4, bedeutet dies, dass s3 nach s4 kommt, da lexikografisch Großbuchstaben vor den Kleinbuchstaben stehen.

Wenn die Methode compareTo() Null zurückgibt, bedeutet dies, dass beide verglichenen Strings gleich sind, wie im Fall von s9 und s10.

class CompareStrings {
  public static void main(String args[]) {
    String s1 = "apple";
    String s2 = "orange";
    compareStrings(s1, s2);
    String s3 = "apple";
    String s4 = "Orange";
    compareStrings(s3, s4);
    String s5 = "sole";
    String s6 = "soul";
    compareStrings(s5, s6);
    String s7 = "john";
    String s8 = "johnson";
    compareStrings(s7, s8);
    String s9 = "one";
    String s10 = "one";
    compareStrings(s9, s10);
  }

  public static void compareStrings(String s1, String s2) {
    int comparedResult = s1.compareTo(s2);

    if (comparedResult > 0) {
      System.out.println(s1 + " comes after " + s2);
    } else if (comparedResult < 0) {
      System.out.println(s1 + " comes before " + s2);
    } else {
      System.out.println(s1 + " is equal to " + s2);
    }
  }
}

Ausgabe:

apple comes before orange
apple comes after Orange
sole comes before soul
john comes before johnson
one is equal to one

Strings auf traditionelle Weise alphabetisch vergleichen

In diesem Beispiel verwenden wir dieselben Strings mit derselben Ausgabe wie im vorherigen Beispiel, aber die Methode ist anders. Anstatt eine Methode aus einer beliebigen Klasse zu verwenden, erstellen wir unsere eigenen Methoden. compareStrings() ist die Methode, bei der der Vergleich stattfindet.

In compareStrings() erstellen wir eine Schleife, die bis zum Ende der beiden Strings s1 und s2 prüft. Innerhalb der Schleife erhalten wir zuerst die Zeichen des Strings mit charAt() und wandeln sie in int um, was einen ASCII-Wert zurückgibt. Wir tun dies für beide Strings und vergleichen dann die ASCII-Werte. Wenn alle ASCII-Werte gleich sind, bedeutet dies, dass auch beide Strings gleich sind.

Wenn die ASCII-Werte unterschiedlich sind, geben wir die Differenz zwischen den ASCII-Werten von Strings mit (int) s1.charAt(i) - (int) s2.charAt(i); zurück. Nach der Schleife überprüfen wir die Länge der Strings und geben dann die Differenz zwischen ihnen zurück.

Nehmen Sie zuletzt den Wert int, der von der Methode compareStrings() zurückgegeben wird, und übergeben Sie ihn mit den Strings an die Funktion getComparisonResult(), die das Ergebnis ausgibt, ob der String davor oder danach kommen soll oder ob sie es sind gleich.

class CompareStrings {
  public static void main(String[] args) {
    String s1 = "apple";
    String s2 = "orange";
    int getValue1 = compareStrings(s1, s2);

    String s3 = "apple";
    String s4 = "Orange";
    int getValue2 = compareStrings(s3, s4);

    String s5 = "sole";
    String s6 = "soul";
    int getValue3 = compareStrings(s5, s6);

    String s7 = "john";
    String s8 = "johnson";
    int getValue4 = compareStrings(s7, s8);

    String s9 = "one";
    String s10 = "one";
    int getValue5 = compareStrings(s9, s10);

    getComparisonResult(getValue1, s1, s2);
    getComparisonResult(getValue2, s3, s4);
    getComparisonResult(getValue3, s5, s6);
    getComparisonResult(getValue4, s7, s8);
    getComparisonResult(getValue5, s9, s10);
  }

  public static int compareStrings(String s1, String s2) {
    for (int i = 0; i < s1.length() && i < s2.length(); i++) {
      if ((int) s1.charAt(i) == (int) s2.charAt(i)) {
        continue;
      } else {
        return (int) s1.charAt(i) - (int) s2.charAt(i);
      }
    }

    if (s1.length() < s2.length()) {
      return (s1.length() - s2.length());
    } else if (s1.length() > s2.length()) {
      return (s1.length() - s2.length());
    } else {
      return 0;
    }
  }

  private static void getComparisonResult(int value, String s1, String s2) {
    if (value > 0) {
      System.out.println(s1 + " comes after " + s2);
    } else if (value < 0) {
      System.out.println(s1 + " comes before " + s2);
    } else {
      System.out.println(s1 + " and " + s2 + " are equal");
    }
  }
}

Ausgabe:

apple comes before orange
apple comes after Orange
sole comes before soul
john comes before johnson
one and one are equal
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Verwandter Artikel - Java String