¿Por qué no puedo usar el comparador para clasificar primitivas?
-
14-10-2019 - |
Pregunta
Como Java 5 tiene autoboxing, ¿por qué no puedo usar el comparador para clasificar primitivas? Un int
no estaría envuelto en un Integer
?
Solución
Arrays.sort(..)
tienen sobrecargas dedicadas para clasificar matrices primitivas.
Si necesita alguna regla de clasificación especial aparte de las estándar, me temo que tendrá que usar Autoboxing. Además de eso, tendrías que transformar tu matriz a Integer[]
, porque int[]
no es autoboxado.
Y si no está hablando de matrices, sino de colecciones, entonces no tiene otra opción, las colecciones solo pueden contener objetos.
Otros consejos
Porque no puedes parametrizar un Comparator<T>
- o cualquier otro tipo parametrizado- con un tipo primitivo.
Sí, esto es enormemente molesto ... no puedes hacer un List<int>
o Map<String, boolean>
etc, y no puede escribir métodos genéricos que funcionen tanto para tipos de objetos como para primitivas. Debe tener métodos dedicados para cada uno de los 8 tipos primitivos. Pero ese es el diseño con el que nos hemos quedado desde Java 1. Culpe a James Gosling ;-)
Como señala Bozho, Arrays.sort(...)
Proporciona todos los métodos de clasificación que necesita.