Compare Strings Alfabeticamente em Java
-
Compare Strings Alfabeticamente Usando
compareTo()
- Compare Strings Alfabeticamente Usando a Forma Tradicional
Existem várias maneiras de comparar duas ou mais strings em Java, mas se você quiser comparar as strings lexicograficamente (em ordem alfabética), aqui está o artigo para você. A ordem lexicográfica segue o arranjo de palavras em um dicionário. Abaixo, temos exemplos que mostram duas maneiras de comparar strings em ordem alfabética em Java.
Compare Strings Alfabeticamente Usando compareTo()
No exemplo, comparamos várias strings para ver se os resultados estão corretos. O método compareTo()
vem com a classe String
e, portanto, podemos chamá-lo com qualquer string para compará-lo com outra string. Abaixo, comparamos s1
com s2
, s3
com s4
, s5
com s6
e assim por diante.
Quando comparamos as strings usando compareTo()
, este método retorna um valor int
que nos diz onde as strings devem vir antes ou depois ou se são iguais. Por exemplo, se compararmos s1
que tem o valor apple
com s2
que tem orange
usando s1.compare(s2)
, a função comparadoResult
obterá um número inteiro negativo - isso significa que o O valor s1
vem antes de s2
.
Se comparadoResult
obtém um número inteiro positivo, como quando s3
é comparado com s4
, significa que s3
vem depois de s4
porque, lexicograficamente, as letras maiúsculas vêm antes das minúsculas.
Se o método compareTo()
retornar zero, significa que ambas as strings comparadas são iguais, como no caso de 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);
}
}
}
Resultado:
apple comes before orange
apple comes after Orange
sole comes before soul
john comes before johnson
one is equal to one
Compare Strings Alfabeticamente Usando a Forma Tradicional
Neste exemplo, pegamos as mesmas strings com a mesma saída do exemplo anterior, mas o método é diferente. Em vez de usar um método de qualquer classe, criamos nossos próprios métodos. O compareStrings()
é o método onde ocorre a comparação.
Em compareStrings()
, criamos um loop que verifica até o final de ambas as strings, s1
e s2
. Dentro do loop, primeiro obtemos os caracteres da string usando charAt()
e os convertemos em int
, que retorna um valor ASCII. Fazemos isso para ambas as strings e, em seguida, comparamos os valores ASCII. Se todos os valores ASCII forem iguais, isso significa que as duas strings também são iguais.
Se os valores ASCII forem diferentes, retornamos a diferença entre os valores ASCII das strings usando (int) s1.charAt(i) - (int) s2.charAt(i);
. Após o loop, verificamos o comprimento das strings e retornamos a diferença entre elas.
Por fim, pegue o valor int
retornado pelo método compareStrings()
e passe-o com as strings para a função getComparisonResult()
, que imprime o resultado se a string deve vir antes ou depois, ou se eles são igual.
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");
}
}
}
Resultado:
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