为了账号安全,请及时绑定邮箱和手机立即绑定

怎么进行java数组逆序排序?

怎么进行java数组逆序排序?

互换的青春 2019-02-20 23:41:20
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 的话...

  1. 要么自己写/找排序算法;
  2. 要么先将 int[] 转为 Integer[],排序完之后又将 Integer[] 转化为 int[](捂脸)
  3. 要么先排序,再写个简单的方法反转数组...
查看完整回答
反对 回复 2019-03-01
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

nums 具体是什么类型?报的什么错?如果 nums 的顺序已经确定您只是想反转,你可以简单些几行代码把首尾调一下,或者用 apache-commons 的 ArrayUtils.reverse

报错贴出来看看。

查看完整回答
反对 回复 2019-03-01
?
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);
        }
查看完整回答
反对 回复 2019-03-01
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

有的。nums.sort((p1, p2) -> p1.compareTo(p2));

查看完整回答
反对 回复 2019-03-01
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

0-i就好了

查看完整回答
反对 回复 2019-03-01
?
千万里不及你

TA贡献1784条经验 获得超9个赞

guava值得我们学习。Arrays.sort(nums, Ordering.natural().reverse());

查看完整回答
反对 回复 2019-03-01
?
心有法竹

TA贡献1866条经验 获得超5个赞

简单的,你可以在升序排序后自己把数据翻转一下不就完了么.

查看完整回答
反对 回复 2019-03-01
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

nums 具体是什么类型?报的什么错?如果 nums 的顺序已经确定您只是想反转,你可以简单些几行代码把首尾调一下,或者用 apache-commons 的 ArrayUtils.reverse

查看完整回答
反对 回复 2019-03-01
  • 10 回答
  • 0 关注
  • 3747 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号