nums 数组里是int型。Arrays.sort(nums)默认为升序排序,要进行降序排序需要自己写个Comparator,但是为什么不能这样写呢?
class MyComparator implements Comparator<Integer> {
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}
Comparator cmp = new MyComparator();
Arrays.sort(nums, cmp);
报错显示不能用Integer,想问java里有没有库能直接逆序排序的?
10 回答
ibeautiful
TA贡献1993条经验 获得超6个赞
如果你用上了 Java8,可能流式操作看起来会稍微好一点:
int[] nums = {1, 2, 0, 3, 5, 4};
nums = IntStream.of(nums) // 变为 IntStream
.boxed() // 变为 Stream<Integer>
.sorted(Comparator.reverseOrder()) // 按自然序的相反序排序
.mapToInt(Integer::intValue) // 变为 IntStream
.toArray(); // 变为 int[]
System.out.println(Arrays.toString(nums));
没用上 Java8 的话...
- 要么自己写/找排序算法;
- 要么先将 int[] 转为 Integer[],排序完之后又将 Integer[] 转化为 int[](捂脸)
- 要么先排序,再写个简单的方法反转数组...
Smart猫小萌
TA贡献1911条经验 获得超7个赞
nums 具体是什么类型?报的什么错?如果 nums 的顺序已经确定您只是想反转,你可以简单些几行代码把首尾调一下,或者用 apache-commons 的 ArrayUtils.reverse
报错贴出来看看。
SMILET
TA贡献1796条经验 获得超4个赞
附上代码:
class MyComparator implements Comparator<Integer> {
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}
Comparator cmp = new MyComparator();
List<Integer> numList = new ArrayList<>();
numList.add(1);
numList.add(2);
Integer[] nums = numList.toArray(new Integer[numList.size()]);
Arrays.sort(nums,cmp);
for (Integer n : nums){
System.out.println(n);
}
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
nums 具体是什么类型?报的什么错?如果 nums 的顺序已经确定您只是想反转,你可以简单些几行代码把首尾调一下,或者用 apache-commons 的 ArrayUtils.reverse
添加回答
举报
0/150
提交
取消
