Strings alphabetisch in Java vergleichen
-
Strings alphabetisch vergleichen mit
compareTo()
- Strings auf traditionelle Weise alphabetisch 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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedInVerwandter Artikel - Java String
- So führen Sie die Konvertierung von String in String-Array in Java durch
- Wie entferne ich eine Unterzeichenkette aus einer Zeichenkette in Java
- So konvertieren Sie Byte-Array in Hex-String in Java
- Wie man Java-String in Byte konvertiert
- Generieren Sie eine zufällige Zeichenkette in Java
- Die Swap-Methode in Java