Confronta le stringhe in ordine alfabetico in Java
-
Confronta le stringhe in ordine alfabetico utilizzando
compareTo()
- Confronta le stringhe in ordine alfabetico usando il modo tradizionale
Esistono diversi modi per confrontare due o più stringhe in Java, ma se vuoi confrontare le stringhe lessicograficamente (in ordine alfabetico), ecco l’articolo per te. L’ordine lessicografico segue la disposizione delle parole in un dizionario. Di seguito, abbiamo esempi che mostrano due modi di confrontare le stringhe in ordine alfabetico in Java.
Confronta le stringhe in ordine alfabetico utilizzando compareTo()
Nell’esempio, confrontiamo diverse stringhe per vedere se i risultati sono corretti. Il metodo compareTo()
viene fornito con la classe String
, e quindi possiamo chiamarlo con qualsiasi stringa per confrontarlo con un’altra stringa. Di seguito confrontiamo s1
con s2
, s3
con s4
, s5
con s6
, e così via.
Quando confrontiamo le stringhe usando compareTo()
, questo metodo restituisce un valore int
che ci dice dove le stringhe dovrebbero venire prima o dopo o se sono uguali. Ad esempio, se confrontiamo s1
che ha il valore apple
con s2
che ha orange
usando s1.compare(s2)
, la funzione comparedResult
otterrà un numero intero negativo - questo significa che il Il valore di s1
viene prima di s2
.
Se comparedResult
ottiene un numero intero positivo, come quando s3
viene confrontato con s4
, significa che s3
viene dopo s4
perché lessicograficamente, le lettere maiuscole vengono prima delle minuscole.
Se il metodo compareTo()
restituisce zero, significa che entrambe le stringhe confrontate sono uguali, come nel caso di s9
e 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);
}
}
}
Produzione:
apple comes before orange
apple comes after Orange
sole comes before soul
john comes before johnson
one is equal to one
Confronta le stringhe in ordine alfabetico usando il modo tradizionale
In questo esempio, prendiamo le stesse stringhe con lo stesso output dell’esempio precedente, ma il metodo è diverso. Invece di usare un metodo di qualsiasi classe, creiamo i nostri metodi. Il compareStrings()
è il metodo in cui avviene il confronto.
In compareStrings()
, creiamo un bucle che controlla fino alla fine di entrambe le stringhe, s1
e s2
. All’interno del bucle, otteniamo prima i caratteri della stringa usando charAt()
e la trasmettiamo a int
, che restituisce un valore ASCII. Lo facciamo per entrambe le stringhe e poi confrontiamo i valori ASCII. Se tutti i valori ASCII sono uguali, significa che anche entrambe le stringhe sono uguali.
Se i valori ASCII sono diversi, restituiamo la differenza tra i valori ASCII delle stringhe usando (int) s1.charAt(i) - (int) s2.charAt(i);
. Dopo il bucle, controlliamo la lunghezza delle stringhe e poi restituiamo la differenza tra loro.
Infine, prendi il valore int
restituito dal metodo compareStrings()
e passalo con le stringhe alla funzione getComparisonResult()
, che stampa il risultato se la stringa deve venire prima o dopo, o se sono pari.
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");
}
}
}
Produzione:
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.
LinkedIn