Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

ComapreTo

ao desenvolver um sisteminha, fui usar a intercace CompareTo, mas do jeito que usei parece que ela so compara int. Desse modo deu certo:

@Override
    public int compareTo(Carro outroCarro) {
        return this.marca.compareTo(outroCarro.getMarca());

mas tentei fazer desta forma para comparar String e nao deu certo, nao compila:

@Override
    public String compareTo(Carro outroCarro) {
        return this.modelo.compareTo(outroCarro.getModelo());
    }

esse modo de comparacao eh so pra int?

2 respostas
solução!

Este modo de comparação é para qualquer tipo de objeto, mas ele retorna um int. Este int por sua vez pode ser negativo, zero ou positivo; que respectivamente significam menor que, igual e maior que.

O mesmo se aplica para Strings, mas no âmbito lexicográfico. Ou seja, o "menor que" significa, na ordem alfabética, que vem antes; e "maior que" que vem depois. Lembrando que letras maiúsculas vêm antes de minúsculas.

Exemplo:

String str1 = "a";
String str2 = "b";

System.out.println(str1.compareTo(str2));

O resultado exibido será -1. Pois a vem logo antes de b, lexicograficamente falando.

Sendo assim, o codigo que funcionaria no seu exemplo seria:

    @Override
    public int compareTo(Carro outroCarro) {
            return this.modelo.compareTo(outroCarro.getModelo());
    }

perfeito...obrigado