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

Como ordernar lista em ordem alfabetica?

Galera tenho outra duvida aqui sobre ordenacao de uma lista por nome,fiz as implentacoes do metodo corretamente:

public static void imprimirListaOrdenadaPorNome(List<Pessoa> lista) {
        lista.sort(new Comparator<Pessoa>() {
            @Override
            public int compare(Pessoa o1, Pessoa o2) {
                return o1.getNome().compareTo(o2.getNome());
            }
        });
    }

Mas sempre aparece erro de sinstaxe nesse trecho no main do java "Collections.sort(lista);" ,alguem pode me ajudar? "Main do java (.java)": https://pastebin.com/raw/773vwNct

"Corpo do codigo (.java)": https://pastebin.com/raw/df2uLVix

9 respostas

Sabe que linha exatamente está dando erro de sintaxe?

"Collections.sort(lista);" desse arquivo:https://pastebin.com/raw/773vwNct , aparece com erro de sintaxe

*apagar

Dá uma olhada nesse artigo e veja se te ajuda a resolver o problema dessa linha http://blog.caelum.com.br/ordenando-colecoes-com-comparable-e-comparator/

Li esse o artigo o vi e assisti a aula do conteudo , mas ainda consegui.

        for (Pessoa p : lista) {
            Pessoa.imprimirListaOrdenadaPorNome(lista);
        }
    public static void imprimirListaOrdenadaPorNome(List<Pessoa> lista) {
        lista.sort(new Comparator<Pessoa>() {
            @Override
            public int compare(Pessoa o1, Pessoa o2) {
                return o1.getNome().compareTo(o2.getNome());
            }
        });
    }
    @Override
    public int compareTo(Pessoa pessoa) {
        return nome.compareTo(pessoa.nome);
    }

Nao consegui exibir em ordem alfabetica apesar de nao ter dado erro.

Tá vendo aqui

    @Override
    public int compareTo(Pessoa pessoa) {
        return nome.compareTo(pessoa.nome);
    }

Aqui que você tem que implementar o que é igual ao que. O que você fez foi chamar a função novamente. Tenta usar o if para comparar as strings do nome.

solução!

Um amigo da faculdade de ajudou,consegui agr.

Para quem quiser estudar:

    public static void imprimirListaOrdenadaPorIdade(List<Pessoa> lista) {
        lista.sort((p1, p2) -> {
            Integer aux = p1.getIdade();
            return aux.compareTo(p2.getIdade());
        });
        imprimirLista(lista);
    }

*Para fazer a ordenagem , passe uma lista como parametro e utilize forEach para percorrer todas as listas.

        for (Pessoa pessoa : lista) {
            System.out.println("==================");
            pessoa.getNome();
        }

Se puder compartilhar a solução seria legal para futura referência. :)

Atualizei o codigo Andre,vlw por lembrar.