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

Meu Método Sort Não Funciona

Senhores, meu método sort não funciona quando passado "comparador" como argumento. Alguém daria um help pra eu?

package br.com.alura;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;

public class OrdenaStrings {
    public static void main(String[] args) {

        List<String> palavras = new ArrayList<String>();
            palavras.add("Alura");
            palavras.add("Editora Casa Do Codigo");
            palavras.add("Caelum");

            Comparator<String> comparador = new ComparadorPorTamanho();
            palavras.sort(comparador);
            //Collections.sort(palavras, comparador);
            System.out.println(palavras);

            /* for (String p : palavras) {
                System.out.println(p);
            } */

            Consumer<String> consumidor = new ImprimeNaLinha();
            palavras.forEach(consumidor);

    }
}

class ImprimeNaLinha implements Consumer<String>{

    @Override
    public void accept(String s) {
        System.out.println(s);
    }

}

class ComparadorPorTamanho implements Comparator<String>{

    @Override
    public int compare(String s1, String s2) {
        if(s1.length() < s2.length())
            return -1;
        if(s1.length() > s2.length())
            return 1;
        return 0;
    }

}

Meu Windows ainda é o 7, entretanto o java está na versão 9

5 respostas

Alguém?

Cara, acho que tá funcionando sim. Pode verificar sua saída na primeira linha [Alura, Caelum, Editora Casa Do Codigo]

Mas a minha duvida é: No vídeo que o Paulo Silveira ensina, mostra primeiro [Caelum, Alura, Editora Casa do Codigo] . Por isso não entendi, o que está errado.

solução!

Não fiz esse curso, no entanto o racional seria ordenar por comprimento. Então da forma q vc fez está sim correta, vc comparou o atributo length das duas Strings e por fim voltou como resultado a primeira com comprimento 5, depois com 6 e por fim essa maior. Pra testar coloca até o return invertido do que tu fez, que dai ele traz o oposto da tua resposta inicial.

Acabei não me atentando que esqueci de colocar Online ali em Alura