由于Java 5具有自动装箱功能,为什么我不能使用Comparator对原语进行排序? int
不会被Integer
包裹起来?
答案 0 :(得分:6)
Arrays.sort(..)
有专门的重载来排序原始数组。
如果您需要除标准排序规则之外的任何特殊排序规则,我担心您必须使用自动装箱。除此之外,您必须将数组转换为Integer[]
,因为int[]
未自动装箱。
如果你不是在谈论数组,而是关于集合 - 那么你别无选择 - 集合只能容纳对象。
答案 1 :(得分:5)
因为您无法使用基本类型对Comparator<T>
或任何其他参数化类型进行参数化。
是的,这非常烦人......你不能创建List<int>
或Map<String, boolean>
等,并且你不能编写适用于对象类型和基元的泛型方法。您必须为8种基本类型中的每一种都有专用方法。但这就是我们自Java 1以来一直坚持的设计1.责备James Gosling; - )
正如Bozho指出的,Arrays.sort(...)
提供了所需的所有排序方法。