Arrays.sort() 实现降序排列 Comparator接口实现的坑
利⽤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接口实现的坑相关推荐
- 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 ...
- sort 函数降序排列
首先需要包含头文件#include <algorithm> #include <iostream> #include <math.h> #include < ...
- 通过sort()方法实现升序和降序排列
数组 升序:Arrays.sort(arr); 降序: 方法一:Arrays.sort(arr,Collections.reverseOrder()); 方法二: package com.yh.sor ...
- java——数组排序(升序和降序排列)
目录 任务2.数组排序(升序和降序排列) 1.选择法排序 (1)选择法排序含义 (2)选择法排序实现步骤 2.冒泡法排序 (1)冒泡法排序含义 (2)冒泡法排序实现步骤 补充:利用Arrays工具提供 ...
- Java 数组升序降序排列Arrays.sort( )通俗易懂
方法一: 升序排列代码 import java.util.Arrays; import java.util.Comparator; public class Test{public static vo ...
- 6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分)请编写函数Sort函数,将字符串中除首、尾字符外的其余字符按降序排列。函数接口定义:void Sort( char *
6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分) 请编写函数Sort函数,将字符串中除首.尾字符外的其余字符按降序排列. 函数接口定义: void Sort( char *p ...
- 对List的升序与降序排列函数sort()
Collections.sort(list); //升序排列 Collections.sort(list,Collections.reverseOrder()); ...
- java comparator降序_Java TreeMap重写Comparator降序排列
首页 > 基础教程 > 集合框架 > TreeMap类 Java TreeMap重写Comparator降序排列 TreeMap中默认的排序为升序,如果要改变其排序可以自己写一个Co ...
- Java中sort实现降序排序
Java中sort实现降序排序 利用Collections的reverseOrder方法: import java.util.Arrays; import java.util.Collections; ...
最新文章
- 重大改变!Python 或将取代 VBA 成为 Excel 官方脚本语言
- FreeBSD基金会添加新成员,梁莉成为第一位来自微软和中国的基金会董事
- 零代码入门GitHub,图形化交互让你轻松存代码 | 附Git GUI推荐
- 【2015沈阳现场A】
- arduino 嗡鸣器 音乐_[求助]怎样实现红外遥控蜂鸣器播放音乐,求大神指正
- 基于梅尔频谱的音频信号分类识别(Pytorch)
- GIF图片合集(用于网络请求图片用)
- 树莓派摄像头_Arducam 8MP重磅来袭,为树莓派4B构建完全同步的双摄像头方案~
- IDC:安全性、价格和低复杂性是企业采用SD-WAN的主要动因
- IP分类以及子网掩码
- Unity3D 场景编辑器扩展学习笔记-Editor
- C# 根据模板 导出 Excel 图表 (NPOI组件)
- 上位机和下位机基础概念
- 清空数据库里面所有表的数据的语句
- Linux中vsftpd服务配置
- 「R shiny基础」使用shinyapp分享你的Shiny应用
- 均质机工作原理动画_高压均质机结构图.doc
- Edge检查更新时出错:无法连接到Internet。如果使用防火墙,请将 MicrosoftEdgeUpdate.exe 加入允许列表中。
- Task02:学习笔记文本预处理;语言模型;循环神经网络基础
- 数据挖掘之人工神经网络
热门文章
- 2018最新破解pycharm安装过程(含注册码)
- FGMap学习之--天气预报
- 人工智能对电销产生革命性影响吗
- 「镁客早报」NASA公布“门户计划”,未来将在月球轨道建立空间站;特斯拉裁掉Model3交付部门一半以上... 1
- 开篇:数据驱动UI的设计理念
- pandas速学系列四:修改dataframe的六大方法
- jquery在IE下卡死问题解决方法
- ubuntu16.04下MERCURY无线网卡MW150UH问题解决
- 吉首大学第八届“新星杯”大学生程序设计大赛 K: WaWa的难题(找规律)
- 朗伯辐射强度模型MATLAB,朗伯体辐射出射度与辐亮度的关系.PPT