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

Tom*_*ito 2 java sorting autoboxing wrapper

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

Boz*_*zho 6

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

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

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


Nei*_*ett 5

因为您无法Comparator<T>使用基本类型参数化- 或任何其他参数化类型.

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

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