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

meu programa não está ordenando

insira seu código aquipublic class JAVA8_1 {

/* @param args the command line arguments */ public static void main(String[] args) { List palavras = new ArrayList<>(); palavras.add("aluno online"); palavras.add("editora"); palavras.add("caelium"); Comparator comparador = new ComparadorPorTamanho(); palavras.sort(comparador); System.out.println("palavras"); }

}


public class ComparadorPorTamanho implements Comparator { public int compare(String s1, String s2){ if(s1.length() < s2.length()) return -1; if(s1.length() > s2.length()) return 1; return 0;

}}

3 respostas

Boa tarde,

O erro está na linha:

public class ComparadorPorTamanho implements Comparator {

Deveria ser:

public class ComparadorPorTamanho implements Comparator<String> {

Quando você implementa a interface e não define qual tipo de informação será comparada, o padrão é Object, e você comparou Strings, ao mudar a assinatura do método compare para receber Strings você deixou de sobrescrever o método da interface, e deixando o implements Comparator sem tipar, você cai em um erro de compilação, afinal um Object pode ser qualquer coisa, e pode ser um objeto que não tenha o método length() para ser chamado.

Abraço.

solução!

Apenas um outro detalhe não relacionado ao problema de ordenação, olha como está seu print no console:

System.out.println("palavras");

Isso vai mostrar o texto "palavras" no console, o que você quer é ver os elementos do arrayList palavras, então retire as aspas do comando de sysout.

System.out.println(palavras);

pessoal o meu print estava errado, brigado pela ajuda de todos , valeuuuuu