利⽤Collections的reverseOrder⽅法:

Arrays.sort(arr,Collections.reverseOrder());

利⽤Comparator接⼝复写compare⽅法:

import java.util.*;public class InverseOrder{public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] arr = sc.nextLine().split(" ");  //输入“1 2 4 3”int[] nums = new int[arr.length];for(int i=0;i<arr.length;i++){nums[i] = Integer.parseInt(arr[i]);}Integer[] numsInteger = toInteger(nums);  //int[]需要封装成Integer[]Arrays.sort(numsInteger, new MyComparator());System.out.println(Arrays.toString(numsInteger));  //输出“[4, 3, 2, 1]”}public static Integer[] toInteger(int[] intArray) {Integer[] result = new Integer[intArray.length];for (int i = 0; i < intArray.length; i++) {result[i] = Integer.valueOf(intArray[i]);}return result;}
}
class MyComparator implements Comparator<Integer>{@Overridepublic int compare(Integer arg0, Integer arg1){return arg0 > arg1 ?-1:1;}
}

这里将int[]封装成为Integer[]对象的原因是:

当用于测试的nums数组类型为int[]时,其升序排序是正确的,但是降序排序报错:

java: 对于sort(int[],java.util.Comparator<java.lang.Object>), 找不到合适的方法方法 java.util.Arrays.<T>sort(T[],java.util.Comparator<? super T>)不适用(推论变量 T 具有不兼容的上限等式约束条件:int下限:java.lang.Object)方法 java.util.Arrays.<T>sort(T[],int,int,java.util.Comparator<? super T>)不适用(无法推断类型变量 T(实际参数列表和形式参数列表长度不同))

可以看到sort的实现

  • public static void sort(Object[] a)
  • public static <T> void sort(T[] a, Comparator<? super T> c)

第二个方法T[] a 只能存放对象,不能存放基本数据类型,如果放int类型或报错,放入Integer则正常

int是基本数据类型之一,不需要实例化就能用

Integer是int的包装类,需要实例化

两者存在自动装箱封箱,可以适应不同需求

但这里使用的是数组,存在一种“容器”,该“容器”里面存放了两种类型的数据,所以需要手动转化

Arrays.sort() 实现降序排列 Comparator接口实现的坑相关推荐

  1. sort函数降序排列matlab,详解Matlab中 sort 函数用法

    (1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,5,3;2,4 ...

  2. sort 函数降序排列

    首先需要包含头文件#include  <algorithm> #include <iostream> #include <math.h> #include < ...

  3. 通过sort()方法实现升序和降序排列

    数组 升序:Arrays.sort(arr); 降序: 方法一:Arrays.sort(arr,Collections.reverseOrder()); 方法二: package com.yh.sor ...

  4. java——数组排序(升序和降序排列)

    目录 任务2.数组排序(升序和降序排列) 1.选择法排序 (1)选择法排序含义 (2)选择法排序实现步骤 2.冒泡法排序 (1)冒泡法排序含义 (2)冒泡法排序实现步骤 补充:利用Arrays工具提供 ...

  5. Java 数组升序降序排列Arrays.sort( )通俗易懂

    方法一: 升序排列代码 import java.util.Arrays; import java.util.Comparator; public class Test{public static vo ...

  6. 6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分)请编写函数Sort函数,将字符串中除首、尾字符外的其余字符按降序排列。函数接口定义:void Sort( char *

    6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分) 请编写函数Sort函数,将字符串中除首.尾字符外的其余字符按降序排列. 函数接口定义: void Sort( char *p ...

  7. 对List的升序与降序排列函数sort()

    Collections.sort(list);      //升序排列         Collections.sort(list,Collections.reverseOrder());       ...

  8. java comparator降序_Java TreeMap重写Comparator降序排列

    首页 > 基础教程 > 集合框架 > TreeMap类 Java TreeMap重写Comparator降序排列 TreeMap中默认的排序为升序,如果要改变其排序可以自己写一个Co ...

  9. Java中sort实现降序排序

    Java中sort实现降序排序 利用Collections的reverseOrder方法: import java.util.Arrays; import java.util.Collections; ...

最新文章

  1. 重大改变!Python 或将取代 VBA 成为 Excel 官方脚本语言
  2. FreeBSD基金会添加新成员,梁莉成为第一位来自微软和中国的基金会董事
  3. 零代码入门GitHub,图形化交互让你轻松存代码 | 附Git GUI推荐
  4. 【2015沈阳现场A】
  5. arduino 嗡鸣器 音乐_[求助]怎样实现红外遥控蜂鸣器播放音乐,求大神指正
  6. 基于梅尔频谱的音频信号分类识别(Pytorch)
  7. GIF图片合集(用于网络请求图片用)
  8. 树莓派摄像头_Arducam 8MP重磅来袭,为树莓派4B构建完全同步的双摄像头方案~
  9. IDC:安全性、价格和低复杂性是企业采用SD-WAN的主要动因
  10. IP分类以及子网掩码
  11. Unity3D 场景编辑器扩展学习笔记-Editor
  12. C# 根据模板 导出 Excel 图表 (NPOI组件)
  13. 上位机和下位机基础概念
  14. 清空数据库里面所有表的数据的语句
  15. Linux中vsftpd服务配置
  16. 「R shiny基础」使用shinyapp分享你的Shiny应用
  17. 均质机工作原理动画_高压均质机结构图.doc
  18. Edge检查更新时出错:无法连接到Internet。如果使用防火墙,请将 MicrosoftEdgeUpdate.exe 加入允许列表中。
  19. Task02:学习笔记文本预处理;语言模型;循环神经网络基础
  20. 数据挖掘之人工神经网络

热门文章

  1. 2018最新破解pycharm安装过程(含注册码)
  2. FGMap学习之--天气预报
  3. 人工智能对电销产生革命性影响吗
  4. 「镁客早报」NASA公布“门户计划”,未来将在月球轨道建立空间站;特斯拉裁掉Model3交付部门一半以上... 1
  5. 开篇:数据驱动UI的设计理念
  6. pandas速学系列四:修改dataframe的六大方法
  7. jquery在IE下卡死问题解决方法
  8. ubuntu16.04下MERCURY无线网卡MW150UH问题解决
  9. 吉首大学第八届“新星杯”大学生程序设计大赛 K: WaWa的难题(找规律)
  10. 朗伯辐射强度模型MATLAB,朗伯体辐射出射度与辐亮度的关系.PPT