5.5 Ordenando por pontos e o autoboxing
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 extraiPontos = u -> u.getPontos(); Comparator 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 extraiPontos = u -> u.getPontos(); Comparator 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

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
Comparator
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
Comparator
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