Java中Arrays.sort 的用法


说明

这里分为三类来总结:(1)普通类型的数组排序;(2)对象数组排序;(3)二维数组int[][]排序;

提示:以下是本篇文章正文内容,下面案例可供参考

一、普通类型的数组排序

int[] 、short[]、char[]、byte[]、float[]、String[]直接使用Arrays.sort(a)即可。

1.int[] 类型排序:Arrays.sort(a);

用法如下:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
        Arrays.sort(a);
        // 打印结果:0 1 2 3 4 5 6 7 8 9 
        for(int i = 0; i < a.length; i ++) {
            System.out.print(a[i] + " ");
        }
    }
}

2.short[]类型排序:Arrays.sort(a);

用法如下:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        short[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
        Arrays.sort(a);
        // 打印结果:0 1 2 3 4 5 6 7 8 9 
        for(int i = 0; i < a.length; i ++) {
            System.out.print(a[i] + " ");
        }
    }
}

3.char[]类型排序:Arrays.sort(a);

用法如下:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        char[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
        Arrays.sort(a);
        // 打印结果:0 1 2 3 4 5 6 7 8 9
        for(int i = 0; i < a.length; i ++) {
            System.out.print((int)a[i] + " ");
        }
    }
}

注意:打印时不强制转换成int,会默认按照字符打印,打印出来可能会是乱码。

4.byte[]类型排序:Arrays.sort(a);

用法如下:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        byte[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5,127,-128};
        Arrays.sort(a);
        // 打印结果:-128 0 1 2 3 4 5 6 7 8 9 127
        for(int i = 0; i < a.length; i ++) {
            System.out.print((int)a[i] + " ");
        }
    }
}

注意:byte的取值范围为[-128,127]。

5.float[]和double[]类型排序:Arrays.sort(a);

float用法如下:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        float[] a = {0.9f, 0.89f, 0.7f, 0.22f, 0.33f, 0.4f, 0.1f, 0, 0.6f, 0.5f,0.127f};
        Arrays.sort(a);
        // 打印结果:0.0 0.1 0.127 0.22 0.33 0.4 0.5 0.6 0.7 0.89 0.9
        for(int i = 0; i < a.length; i ++) {
            System.out.print(a[i] + " ");
        }
    }
}

double用法如下:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        double[] a = {0.9, 0.89, 0.7, 0.22, 0.33, 0.4, 0.1, 0, 0.6, 0.5,0.127};
        Arrays.sort(a);
        // 打印结果:0.0 0.1 0.127 0.22 0.33 0.4 0.5 0.6 0.7 0.89 0.9
        for(int i = 0; i < a.length; i ++) {
            System.out.print(a[i] + " ");
        }
    }
}

6.String[]首字母排序:Arrays.sort(a);

代码如下(示例):

String[] a = {"banana", "cat", "dog","apple"};
Arrays.sort(a);
// 打印结果:apple banana cat dog 
for(int i = 0; i < a.length; i ++) {
    System.out.print(a[i] + " ");
}

注意:float和double使用科学计数法技术,是离散数据的集合,且要注意精度问题

float:
1bit(符号位),8bits(指数位),23bits(尾数位)
double:
1bit(符号位),11bits(指数位),52bits(尾数位)

二、对象数组排序

1.类对象Student[]排序:Arrays.sort(a, new Comparator() {}

代码如下(示例):

public class Student {

    private String name;
    private int age;
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    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;
    }
}

import java.util.Arrays;
import java.util.Comparator;

public class Main {
    public static void main(String[] args) {
        Student[] a = {
                new Student("zhansan",12),
                new Student("lisi",14),
                new Student("tom",13),
                new Student("jack",11),

        };
        Arrays.sort(a, new Comparator<Student>() {
            @Override
            public int compare(Student e1, Student e2) {
                if (e1.getAge() < e2.getAge()){
                    return -1;// -1 代表我不想调整顺序
                }else if (e1.getAge() < e2.getAge()){
                    return 1;// 1 代表要调整顺序
                }
                return 0;//不交换顺序
            }
        });
        // 打印结果:11 12 13 14
        for(int i = 0; i < a.length; i ++) {
            System.out.print(a[i].getAge() + " ");
        }
    }
}

三、二维数组int[][]排序

代码如下(示例):


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值