Compare Strings Alfabeticamente em Java

Rupam Yadav 12 outubro 2023
  1. Compare Strings Alfabeticamente Usando compareTo()
  2. Compare Strings Alfabeticamente Usando a Forma Tradicional
Compare Strings Alfabeticamente em Java

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 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

Artigo relacionado - Java String