1 Ordenação por Pontos em Vez de Nome
- Para ordenar usuários pela quantidade de pontos, basta alterar o lambda passado:
usuarios.sort(Comparator.comparing(u -> u.getPontos()));
- Esse código pode ser quebrado para melhor compreensão:
Function<Usuario, Integer> extraiPontos = u -> u.getPontos();
Comparator<Usuario> comparator = Comparator.comparing(extraiPontos);
usuarios.sort(comparator);
2 Problema de Autoboxing
O método getPontos() retorna um int, mas Function trabalha com Integer.
Isso causa autoboxing, convertendo int para Integer repetidamente, o que pode impactar a performance.
Esse problema ocorre frequentemente nas novas APIs do Java 8.
3 Solução: Usar ToIntFunction e comparingInt
- Para evitar autoboxing, usa-se ToIntFunction, que trabalha diretamente com int:
ToIntFunction<Usuario> extraiPontos = u -> u.getPontos();
Comparator<Usuario> comparator = Comparator.comparingInt(extraiPontos);
usuarios.sort(comparator);
- A versão mais enxuta do código:
usuarios.sort(Comparator.comparingInt(u -> u.getPontos()));
- Essa abordagem melhora a eficiência da ordenação ao eliminar conversões desnecessárias.
Arquivo: OrdenacaoPontos.java
Top comments (0)