5

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

4

2 回答 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 回答