为什么可以用Arrays.sort()排序

你可能只知道Array.sort()可以排序,却不知道为什么可以用它排序

在平常用到数组或者字符串数组排序时,首先想到的就是使用Arrays.sort()进行排序,方便好用:

import java.util.Arrays;

public class demo {
    public static void main(String[] args) {
        Integer a[]={1,2,0,4,5,8,9,3};
        String b[]={"a","d","w","b"};
        Arrays.sort(a);
        for (int i=0;i<a.length;i++)
        System.out.print(a[i]+"  ");
    }
}

输出的就是排序后的a,b数组

0  1  2  3  4  5  8  9  
a  b  d  w  
Process finished with exit code 0

我们进入Integer和String的源码可以看到它们都实现了Comparable接口,写了compareTo方法

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence,
               Constable, ConstantDesc{
......
public int compareTo(){
		...
	}
}
public final class Integer extends Number
        implements Comparable<Integer>, Constable, ConstantDesc{
...
public int compareTo() {
			...
        }
}

这里就联想到平时给自定义类排序时也是实现comparable接口,再重写compareTo方法,可以验证一下:


import java.util.Arrays;

public class demo {
    public static void main(String[] args) {
        Money m1=new Money(100,"小王");
        Money m2=new Money(10012,"小张");
        Money m3=new Money(130,"小赵");
        Money m[]={m1,m2,m3};
        Arrays.sort(m);

        for (int i=0;i<m.length;i++)
            System.out.print(m[i].getName()+"  ");

    }
}
class Money implements Comparable<Money>{
    private int num;
    private String name;
    public Money(int num,String name){
        this.name=name;
        this.num=num;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public int compareTo(Money o) {
        return o.num-this.num;
    }
}

这个Money类存储了每个人的姓名和存款,排完序之后输出名字为:

小张  小赵  小王  
Process finished with exit code 0

这是从大到小降序排,想要升序排只需要把Money类中的compareTo方法相减的调换一下即可。

以上是对自定义类的sort,但是类实现的comparable接口只是实现了 为什么可以用Arrays.sort()排序,至于“Arrays.sort()为什么可以排序”这个问题还是得回到最终的sort源码里,这个理解难度比较大,下次再另开新文章好好说说

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Arrays.sort是Java中用于对数组进行排序的方法。它可以按照升序或降序对数组中的元素进行排序。根据引用\[1\],可以使用Arrays.sort(arr)对整个数组进行从小到大的排序。例如,给定数组arr = {4,3,5,1,2,9,3,0},使用Arrays.sort(arr)后,数组将变为{0,1,2,3,3,4,5,9}。\[1\] 如果只想对数组的一部分进行排序,可以使用Arrays.sort(arr, start, end)方法。根据引用\[3\],例如,给定数组arr = {3,60,2,1,4,55,6,8,47,2,3,5},使用Arrays.sort(arr, 2, arr.length)将在第二位以后对数组进行从小到大的排序排序后的数组为{3,60,1,2,2,3,4,5,6,8,47,55}。\[3\] 总结起来,Arrays.sort方法可以对整个数组或部分数组进行排序,可以按照升序或降序进行排序。 #### 引用[.reference_title] - *1* [数组Array.sort()排序的方法](https://blog.csdn.net/qq_42401674/article/details/103391890)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [通过Arrays.sort()方法对数组进行排序](https://blog.csdn.net/qq_36138652/article/details/97045743)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值