-
Notifications
You must be signed in to change notification settings - Fork 432
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Map Ordenação LivrariaOnline - exibirLivrosOrdenadosPorPreco(), #21
Comments
Bom dia Camila! Consegui fazer! Esse foi o exemplo mais simples que consegui implementar, os outros ficaram muito complexos! public void exibirLivrosOrdenadosPorPreco() {
TreeMap<Double, Livro> livrosOrdenados = new TreeMap<>(new Comparator() {
@Override
public int compare(Double preco1, Double preco2) {
return Double.compare(preco1, preco2);
}
});
System.out.println(livrosOrdenados.entrySet());
for (var entry : livrosMap.entrySet()) {
Livro livro = entry.getValue();
double preco = livro.getPreco();
livrosOrdenados.put(preco, entry.getValue());
}
System.out.println(livrosOrdenados);
}` |
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());
}
}
List<Map.Entry<String, Livro>> livrosParaOrdenarPorPreco = new ArrayList<>(livros.entrySet());
Collections.sort(livrosParaOrdenarPorPreco, new ComparatorPorPreco());
Map<String, Livro> livrosOrdenadosPorPreco = new LinkedHashMap<>();
for (Map.Entry<String, Livro> entry : livrosParaOrdenarPorPreco) {
livrosOrdenadosPorPreco.put(entry.getKey(), entry.getValue());
}
public Map<String, Livro> exibirLivrosOrdenadosPorPreco() {
List<Map.Entry<String, Livro>> livrosParaOrdenarPorPreco = new ArrayList<>(livros.entrySet());
Collections.sort(livrosParaOrdenarPorPreco, new ComparatorPorPreco());
Map<String, Livro> livrosOrdenadosPorPreco = new LinkedHashMap<>();
for (Map.Entry<String, Livro> entry : livrosParaOrdenarPorPreco) {
livrosOrdenadosPorPreco.put(entry.getKey(), entry.getValue());
}
return livrosOrdenadosPorPreco;
} Também criei o método public Map<String, Livro> exibirLivrosOrdenadosPorAutor() {
List<Map.Entry<String, Livro>> livrosParaOrdenarPorAutor = new ArrayList<>(livros.entrySet());
Collections.sort(livrosParaOrdenarPorAutor, new ComparatorPorAutor());
Map<String, Livro> livrosOrdenadosPorAutor = new LinkedHashMap<>();
for (Map.Entry<String, Livro> entry : livrosParaOrdenarPorAutor) {
livrosOrdenadosPorAutor.put(entry.getKey(), entry.getValue());
}
return livrosOrdenadosPorAutor;
} Veja que é praticamente a mesma coisa. Seguindo os exemplos acima, deixo como desafio, você tentar implementar o método Ah, pode instanciar o |
Oi, @Udinei. Meus parabéns, sua implementação ficou ótima! Porém tem um detalhe: No nosso exercício, o De fato, quando queremos ordenar um |
Boa tarde! Camila!
Fazendo os exercicios de Map e nalisando o retorno do metodo exibirLivrosOrdenadosPorPreco(), me parece que esse metodo não esta ordenando corretamente, mesmo usando o Comparable, ou Comparator que também da o mesmo resultado?.
Baixei suas classes e deu o mesmo resultado, pra mim o retorno não esta correto!
Dei um pesquisada e vi alguns exemplos para fazer essa ordenação, mas achei muito complexos!
Pode verficar por favor e dar um retorno?
Vou continuar pesquisando aqui uma forma mais simples de fazer isso!
Obrigado!!
The text was updated successfully, but these errors were encountered: