Pourquoi je ne peux pas utiliser pour des primitives de Comparator tri?
-
14-10-2019 - |
Question
Java 5 ont autoboxing, pourquoi je ne peux pas utiliser pour des primitives de Comparator tri? Un int
ne serait pas enveloppé dans un Integer
?
La solution
Arrays.sort(..)
ont surcharges dédiées pour le tri des tableaux primitifs.
Si vous avez besoin de règles de tri de spéciales en dehors du standard, je crains que vous auriez à utiliser autoboxing. En plus de cela, vous auriez à transformer votre tableau à Integer[]
, car int[]
n'autoboxed.
Et si vous ne parlez pas de tableaux, mais sur les collections - alors vous avez pas d'autre choix -. Collections ne peuvent contenir que des objets
Autres conseils
Parce que vous ne pouvez pas paramétrer un Comparator<T>
- ou tout autre type paramétré -. Avec un type primitif
Oui, c'est massivement ennuyeux ... vous ne pouvez pas faire un List<int>
ou un Map<String, boolean>
etc, et vous ne pouvez pas écrire des méthodes génériques travail pour les deux types d'objets et primitives. Vous devez disposer de méthodes dédiées pour chacun des 8 types primitifs. Mais c'est la conception que nous avons été coincés avec Java depuis 1. Blame James Gosling; -)
Comme Bozho souligne, Arrays.sort(...)
fournit toutes les méthodes de tri dont vous avez besoin.