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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top