cami-la / collections-java-api-2023

Este repositório é referente ao curso "Collection Framework API Java" e é uma valiosa contribuição para a comunidade de desenvolvedores Java, fornecendo exemplos práticos e recursos educacionais relacionados à poderosa API de coleções da linguagem Java.
https://web.dio.me/course/conhecendo-collections-java/learning/c5d6f4e1-6d05-4eea-93d8-d292c708999f
822 stars 595 forks source link

LivrariaOnline #41

Closed dcasimiro89 closed 9 months ago

dcasimiro89 commented 9 months ago

Boa noite, Camila. Tudo bem? Estou tentando fazer o desafio da LivrariaOnline, mas travei em uma parte.

issue_LivrariaOnline

Mesmo criando um Comparator utilizando Map.Entry:

class ComparatorPorPreco implements Comparator<Map.Entry<String, Livro>> {
    @Override
    public int compare(Map.Entry<String, Livro> l1, Map.Entry<String, Livro> l2) {
        return Double.compare(l1.getValue().getPreco(), l2.getValue().getPreco());
    }
}

Achei que funcionaria passando como parâmetro, conforme imagem acima, mas está dando erro. Olhando a sua resposta, você utilizou List + Collection.sort(), para fazer a ordenação.

Mas a minha dúvida é, não tem como utilizar o Comparator dentro do TreeMap diretamente? Ou só dessa forma mesmo que você fez?

Obrigado.

dcasimiro89 commented 9 months ago

Oi, Camila, bom dia. Tudo bem? Hoje pesquisando a fundo, acredito que compreendi a situação rsrs Treemap ele só ordena pela chave e não por valor. Por isso foi necessário criar uma List e fazer uma cópia para fazer a ordenação. Correto?

cami-la commented 9 months ago

Isso, @dcasimiro89. Acertou, isso mesmo. O TreeMap ele organiza a partir das chaves. Inclusive acho que falei isso nas aulas, mas talvez não tenha dado tanta ênfase. Desculpe, viu?

De qualquer forma, parabéns pelos estudos. Está fazendo direitinho os exercícios. (:

Sigo à disposição.

dcasimiro89 commented 9 months ago

Imagina! Erro foi meu que deixei passar batido essa informação. Estava tentando forçar uma ordenação, onde não existe.

Muito obrigado pela resposta e pelo apoio =)