由于Java 5具有自动氧化功能,为什么我不能使用比较器对原语进行排序?一个 int 不会包裹 Integer?

有帮助吗?

解决方案

Arrays.sort(..) 具有用于对原始数组进行排序的专用过载。

如果您除了标准规则外需要任何特殊的排序规则,恐怕您必须使用自动氧化规则。除此之外,您还必须将您的数组转换为 Integer[], , 因为 int[] 没有自动毒素。

而且,如果您不是在谈论数组,而是谈论收藏品 - 那么您别无选择 - 收藏只能容纳对象。

其他提示

因为您无法参数化 Comparator<T> - 或任何其他参数化类型 - 具有原始类型。

是的,这很烦人...您不能做一个 List<int> 或a Map<String, boolean> 等,您不能编写适用于对象类型和原语的通用方法。您必须针对8种原始类型中的每一种都有专门的方法。但这就是我们自Java 1以来一直坚持的设计。

正如Bozho指出的那样 Arrays.sort(...) 提供您需要的所有分类方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top