1.Arrays类的排序方法:

public static void sort(类型[] a)        //对数组进行默认升序排序

public static <T> void sort(类型[] a, Comparator<?suprt T > c) //使用比较器对象自定义排序

2.自定义排序规则:设置Comparator接口对应的比较器对象,来制定比较规则。

  • 如果认为左边数据 大于 右边数据,返回正整数(返回1);
  • 如果认为左边数据 小于 右边数据,返回负整数(返回-1);
  • 如果认为左边数据 等于 右边数据,返回0;
返回1 交换顺序
返回-1 不交换顺序
返回0 不交换顺序

3.案例实战:

import java.util.Arrays;
import java.util.Comparator;/*** Comparator比较对象*/
public class ArraysDemo {public static void main(String[] args) {//1.Arrays的sort方法对于有值特性的数组是默认升序排序int[] ages = {34,12,42,23};Arrays.sort(ages);System.out.println(Arrays.toString(ages));//2.降序排序(自定义比较器对象,只支持引用类型的排序)Integer[] ages1 = {34,12,42,23};/*参数一:被排序的数组,必须是引用类型的元素参数二:匿名内部类对象,代表一个比较器对象*/Arrays.sort(ages1, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {
//                return o1-o2;//默认升序return o2-o1;//默认降序-(o1-o2)}});System.out.println(Arrays.toString(ages1));System.out.println("-------------------------------");Student[] students = new Student[3];students[0]  = new Student("小花",23,157.5);students[1]  = new Student("小星",21,167.5);students[2]  = new Student("小清",20,177.5);System.out.println(Arrays.toString(students));//对int型的年龄排序Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return o1.getAge()-o2.getAge();//升序排序}});System.out.println(Arrays.toString(students));//对double型的身高排序Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return Double.compare(o1.getHeight(), o2.getHeight());}});System.out.println(Arrays.toString(students));}}class Student{private String name;private int age;private double height;public Student() {}public Student(String name, int age, double height) {this.name = name;this.age = age;this.height = height;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", height=" + height +'}';}
}

Java基础——Arrays类的排序方法相关推荐

  1. Java基础——Arrays类

    每日正能量 如果你要做一件事,不要到处宣言自己的想法,只管安安静静地去做,值不值,时间是最好的证明,自己的人生,得自己负责. Arrays类 JDK中提供了一个专门用于操作数组的工具类,即Arrays ...

  2. Java基础Object类的equals方法

    关于Object类中的equals方法 1.equals方法的源代码 public boolean equals(Object obj) {return (this == obj);}以上这个方法是O ...

  3. java基础—Date类的常见方法演示

    Date 中的常用方法演示 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleD ...

  4. Java基础Object类的finalize方法

    1.在Object类中的源代码: protected void finalize() throws Throwable { } GC:负责调用finalize()方法. 2.finalize()方法只 ...

  5. Java基础Object类的hashCode方法

    hashCode方法: 在Object中的hashCode方法是怎样的? public native int hashCode(); 这个方法不是抽象方法,带有native关键字,底层调用C++程序. ...

  6. Java基础18-String类【String类的特点对象个数常用方法】【超详细讲解】

    Java基础-String类[超详细讲解] String类的特点 String在java.lang.String包中 1:特点 (1)String类型不能被继承,因为由final修饰 (2)Strin ...

  7. java的知识点17——java.util.Arrays类、多维数组

    java.util.Arrays类 Arrays类包含了:排序.查找.填充.打印内容等常见的操作. 打印数组 package cn.dym08; import java.util.Arrays;pub ...

  8. java中的五种排序方法_用Java排序的五种有用方法

    java中的五种排序方法 Java排序快速概述: 正常的列表: private static List VEGETABLES = Arrays.asList("apple", &q ...

  9. java.util 1.8_JDK1.8源码(四)——java.util.Arrays 类

    java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用. 1.asList public static ...

最新文章

  1. 计图(Jittor) 1.1版本:新增骨干网络、JIT功能升级、支持多卡训练
  2. IIRF重写在asp.net4.0+IIS6中部分失败的解决方案
  3. javarxtx串口接收时数据会分成好几段_【STM32】串口通信基本原理(超基础、详细版)...
  4. oracle编程艺术笔记1
  5. KMM Kotlin expect的几种声明方式
  6. 关于A+B+C问题4种语言的解决办法,Java、C语言、C++、Python
  7. 演讲《云图,让阅读更精彩(Better Cloudary™, Better Reading)》
  8. ANDROID事件触发机制
  9. Insert增加数据
  10. 在vue项目中导入element-ui
  11. arm 基于qcamera实现_基于Arm平台的研华EPC—R4680工控机实现快速储物柜智能解决方案...
  12. php薪资图表,加薪利器,老板再也不用担心生成图表图片了
  13. 男人想要成功--必须明白的22个道理
  14. 计算机硬盘扇区修复,如何修复Windows中的“硬盘坏扇区”
  15. UI设计课EDC研究所1期 Part 9 -“特殊的字体”
  16. MongoDB下载、安装和配置教程
  17. python中screen用法_screen的用法
  18. 区块链应用在网络安全的六个案例
  19. maximo跟java_Maximo7.5远程调用maximo的手动输入节点工作流
  20. 元宇宙并不是区块链的延伸 因为区块链并未跳出虚拟的牵绊

热门文章

  1. 蹲草丛-dfs或者bfs找最小的连着草丛i
  2. 如何把视频嵌入PPT合为一个文件
  3. 【邻接矩阵乘法】沼泽鳄鱼
  4. matlab s-function找不到
  5. 如何嫁给年入百万的阿里人?
  6. Bandwagon安装禅道记录
  7. 错误 C2248 “Bus::operator ()”: 无法访问 private 成员(在“Bus”类中声明)
  8. 三层交换机与单臂路由的优缺点
  9. 15.学习Camera之——camera理论基础和工作原理
  10. 聊聊追求测试技术导致过度测试