为什么我不能使用Comparator对原语进行排序?

时间:2010-12-29 21:38:28

标签: java sorting wrapper autoboxing

由于Java 5具有自动装箱功能,为什么我不能使用Comparator对原语进行排序? int不会被Integer包裹起来?

2 个答案:

答案 0 :(得分:6)

Arrays.sort(..)有专门的重载来排序原始数组。

如果您需要除标准排序规则之外的任何特殊排序规则,我担心您必须使用自动装箱。除此之外,您必须将数组转换为Integer[],因为int[]未自动装箱。

如果你不是在谈论数组,而是关于集合 - 那么你别无选择 - 集合只能容纳对象。

答案 1 :(得分:5)

因为您无法使用基本类型对Comparator<T>或任何其他参数化类型进行参数化。

是的,这非常烦人......你不能创建List<int>Map<String, boolean>等,并且你不能编写适用于对象类型和基元的泛型方法。您必须为8种基本类型中的每一种都有专用方法。但这就是我们自Java 1以来一直坚持的设计1.责备James Gosling; - )

正如Bozho指出的,Arrays.sort(...)提供了所需的所有排序方法。