Comparer les chaînes par ordre alphabétique en Java
-
Comparer les chaînes par ordre alphabétique à l’aide de
compareTo()
- Comparez les chaînes par ordre alphabétique en utilisant la méthode traditionnelle
Il existe plusieurs façons de comparer deux chaînes ou plus en Java, mais si vous souhaitez comparer les chaînes lexicographiquement (par ordre alphabétique), voici l’article qu’il vous faut. L’ordre lexicographique suit l’arrangement des mots dans un dictionnaire. Ci-dessous, nous avons des exemples qui montrent deux manières de comparer des chaînes par ordre alphabétique en Java.
Comparer les chaînes par ordre alphabétique à l’aide de compareTo()
Dans l’exemple, nous comparons plusieurs chaînes pour voir si les résultats sont corrects. La méthode compareTo()
est fournie avec la classe String
, et nous pouvons donc l’appeler avec n’importe quelle chaîne pour la comparer avec une autre chaîne. Ci-dessous, nous comparons s1
avec s2
, s3
avec s4
, s5
avec s6
, et ainsi de suite.
Lorsque nous comparons les chaînes à l’aide de compareTo()
, cette méthode renvoie une valeur int
qui nous indique où les chaînes doivent venir avant ou après ou si elles sont égales. Par exemple, si nous comparons s1
qui a la valeur apple
avec s2
qui a orange
en utilisant s1.compare(s2)
, la fonction compareResult
obtiendra un entier négatif - cela signifie que le La valeur s1
précède s2
.
Si comparedResult
obtient un entier positif, comme lorsque s3
est comparé à s4
, cela signifie que s3
vient après s4
car, lexicographiquement, les majuscules précèdent les minuscules.
Si la méthode compareTo()
renvoie zéro, cela signifie que les deux chaînes comparées sont égales, comme dans le cas de s9
et 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);
}
}
}
Production:
apple comes before orange
apple comes after Orange
sole comes before soul
john comes before johnson
one is equal to one
Comparez les chaînes par ordre alphabétique en utilisant la méthode traditionnelle
Dans cet exemple, nous prenons les mêmes chaînes avec la même sortie que l’exemple précédent, mais la méthode est différente. Au lieu d’utiliser une méthode de n’importe quelle classe, nous créons nos propres méthodes. Le compareStrings()
est la méthode où se produit la comparaison.
Dans compareStrings()
, nous créons une boucle qui vérifie jusqu’à la fin des deux chaînes, s1
et s2
. À l’intérieur de la boucle, nous récupérons d’abord les caractères de la chaîne à l’aide de charAt()
et la convertissons en int
, qui renvoie une valeur ASCII. Nous faisons cela pour les deux chaînes, puis comparons les valeurs ASCII. Si toutes les valeurs ASCII sont égales, cela signifie que les deux chaînes sont également égales.
Si les valeurs ASCII sont différentes, alors nous retournons la différence entre les valeurs ASCII des chaînes en utilisant (int) s1.charAt(i) - (int) s2.charAt(i);
. Après la boucle, nous vérifions la longueur des chaînes, puis retournons la différence entre elles.
Enfin, prenez la valeur int
renvoyée par la méthode compareStrings()
et passez-la avec les chaînes à la fonction getComparisonResult()
, qui affiche le résultat si la chaîne doit venir avant ou après, ou si elles sont égal.
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");
}
}
}
Production:
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