由于 Java 5 具有自动装箱功能,为什么我不能使用 Comparator 对原语进行排序?Anint
不会被包裹成Integer
?
问问题
4690 次
2 回答
7
Arrays.sort(..)
具有用于排序原始数组的专用重载。
如果您需要除标准规则之外的任何特殊排序规则,恐怕您必须使用自动装箱。除此之外,您还必须将数组转换为Integer[]
,因为int[]
没有自动装箱。
如果你不是在谈论数组,而是在谈论集合——那么你别无选择——集合只能保存对象。
于 2010-12-29T21:40:39.197 回答
6
因为您不能Comparator<T>
使用原始类型参数化一个 - 或任何其他参数化类型。
是的,这非常烦人......你不能制作一个List<int>
或一个Map<String, boolean>
等,你不能编写适用于对象类型和原语的通用方法。对于 8 种原始类型中的每一种,您都必须有专用的方法。但这是自 Java 1 以来我们一直坚持的设计。责备 James Gosling ;-)
正如 Bozho 所指出的,Arrays.sort(...)
它提供了您需要的所有排序方法。
于 2010-12-29T21:50:01.700 回答