为什么我不能使用比较器对原语进行排序?
-
14-10-2019 - |
题
由于Java 5具有自动氧化功能,为什么我不能使用比较器对原语进行排序?一个 int
不会包裹 Integer
?
解决方案
Arrays.sort(..)
具有用于对原始数组进行排序的专用过载。
如果您除了标准规则外需要任何特殊的排序规则,恐怕您必须使用自动氧化规则。除此之外,您还必须将您的数组转换为 Integer[]
, , 因为 int[]
没有自动毒素。
而且,如果您不是在谈论数组,而是谈论收藏品 - 那么您别无选择 - 收藏只能容纳对象。
其他提示
因为您无法参数化 Comparator<T>
- 或任何其他参数化类型 - 具有原始类型。
是的,这很烦人...您不能做一个 List<int>
或a Map<String, boolean>
等,您不能编写适用于对象类型和原语的通用方法。您必须针对8种原始类型中的每一种都有专门的方法。但这就是我们自Java 1以来一直坚持的设计。
正如Bozho指出的那样 Arrays.sort(...)
提供您需要的所有分类方法。
不隶属于 StackOverflow