Método compareTo()

Olá comunidade.

Queria me informar mais sobre esse método. Meu professor quer um código que bote em ordem alfabética nomes lidos pelos usuários, porém o que eu achei até agora foram outros métodos como equals, arrays… Tenho um prazo pra entregar até amanhã e não consegui construir nada com que ao menos se pareça kkkk Também não consigo encontrar em fóruns códigos com a utilização do compareTo.

teste esse código, de uma mexida, entenda o comportamento dele, acho que você pode tirar uma idéia.

public static void main(String[] args) {

    String nome1 = "Ana Carolina";
    String nome2 = "Roberto Soares";

    if (nome1.compareTo(nome2) < 0) {
        JOptionPane.showMessageDialog(null, "Nome: " + nome1+" vem Antes de: "+nome2);
    } else {
        JOptionPane.showMessageDialog(null, "Nome: " + nome2+" vem Antes de: "+nome1);
    }
}

ele compara lexicograficamente as String e verifica se uma é maior que a outra, retorna valores menores que zero se a palavra for antecessora da outra, retorna 0 se forem iguais, e valores maiores que 0 se for sucessora.

lembrando que este método é case sensitive, ou seja leva em conta maiúsculas e minusculas, sendo que as maiúsculas vem primeiro, experimente colocar o “A” de Ana em minusculo, o resultado será que Roberto Soares é predecessor de ana Carolina, para ignorar maiusculas use o compareToIgnoreCase();

espero ter ajudado.

1 curtida

Em uma simples pesquisa nos sites de buscas tem a explicação do compareTo

Explicação

Inglês

The value 0 if the argument is a string lexicographically equal to this string; a value less than 0 if the argument is a string lexicographically greater than this string; and a value greater than 0 if the argument is a string lexicographically less than this string.

Tradução (Google Translator)

O valor 0 se o argumento é uma string lexicographically igual a este string; um valor inferior a 0 se o argumento é uma string lexicographically maior do que essa string; e um valor maior que 0 se o argumento é uma string lexicographically inferior a esta cadeia .

Referencia: Java - String compareTo() Method

String a0 = "iguais";
String a1 = "iguais";
System.out.println(a0.compareTo(a1)); // 0
	
String a2 = "diferente";
System.out.println(a0.compareTo(a2)); // 5
1 curtida

Você pode adicionar os nomes em um ArrayList de String, e utilizar o método estático da classe Collections para realizar a ordenação dos nomes para você, já que a classe String já tem uma implementação compareTo pronta.

Exemplo:

List<String> lista = new ArrayList<String>();
lista.add("Maria");
lista.add("Joao");

Collections.sort(lista);

Com isso sua lista de nomes será ordenada.

Cara, tinha até pensado desse jeito sabia? Mas tava tão inseguro à cerca de como fazer kkkkk Mas obrigado, vou entender como ele funciona pra implementação! :slight_smile:

1 curtida