我需要使用自定义排序规则对大约100000个整数进行排序。如果我使用Comparator,我需要一个数组Integer实例,创建速度较慢,排序较慢并占用更多内存。
使用Android 4.2对Galaxy Nexus进行快速基准测试:
createIntArrayAndFillWith1to100000; // 18 ms
createIntegerArrayAndFillWith1to100000; // 191 ms (using Integer.valueOf(i))
Arrays.sort(randomInts); // 354 ms
Arrays.sort(randomIntegers, simpleComparator); // 1734 ms
实施自定义排序是我的最佳选择吗?
答案 0 :(得分:1)
我认为唯一的方法是在数组上为elementar数据类型 int 实现排序算法。 Java库不为每个elementar数据类型提供版本。拳击/拆箱就是答案。
我只是为这种特殊需要实现排序算法。 (如果速度真的那么重要) 使用快速排序进行内部排序非常容易实现quicksort (wikipedia)