Java中的Arrays.sort(),升序降序?

一、一维数组比较

1、默认升序

首先对于sort()函数来说默认是升序的

import java.util.Arrays;

public class helloworld {
    public static void main(String[] args) {
        int[] arr={1,4,3,6,7,9};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

2、区间排序sort(T[] a,int formIndex, int toIndex)

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

public class helloworld {
    public static void main(String[] args) {
        Integer[] arr2={1,4,3,8,2,9,11,3};
        Arrays.sort(arr2,2,5);
        System.out.println(Arrays.toString(arr2));
    }
}

 

3、降序

如果想要降序,Arrays.sort(scores,Collections.reverseOrder());。

首先要注意的是不能用int这个类型了,要用Integer,不能使用基本类型(int,double, char),如果是int型需要改成Integer,float要改成Float

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

public class helloworld {
    public static void main(String[] args) {
        Integer[] arr2={1,4,3,6,7,9,11};
        Arrays.sort(arr2, Collections.reverseOrder());
        System.out.println(Arrays.toString(arr2));
    }
}

4、重载比较器进行降序

也可以重载比较器,自定义比较

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

public class helloworld {
    public static void main(String[] args) {
        Integer[] arr2={1,4,3,6,7,9};
        Arrays.sort(arr2, new Comparator<Integer>() {
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        System.out.println(Arrays.toString(arr2));
    }
}

 

 二维数组比较

1、按照第一元素比较

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

public class helloworld {
    public static void main(String[] args) {
        int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};
        int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};
        Arrays.sort(a1, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0]-o2[0];
            }
        });
        System.out.println("按照第一元素比较  第一种方法");
        for (int i = 0; i < a1.length; i++) {
            System.out.println(Arrays.toString(a1[i]));
        }

        Arrays.sort(a2,(a, b)->(a[0]-b[0]));
        System.out.println("按照第一元素比较  第二种方法");
        for (int i = 0; i < a1.length; i++) {
            System.out.println(Arrays.toString(a2[i]));
        }
    }
}

若想第一元素相等,按第二元素比较 

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

public class helloworld {
    public static void main(String[] args) {
        int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};
        int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};
        Arrays.sort(a1, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if(o1[0]==o2[0]){
                    return o1[1]-o2[1];
                }
                return o1[0]-o2[0];
            }
        });
        System.out.println("按照第一元素比较 也可以比较第二元素 第一种方法");
        for (int i = 0; i < a1.length; i++) {
            System.out.println(Arrays.toString(a1[i]));
        }

//        Arrays.sort(a2,(a, b)->(a[0]-b[0]));
//        System.out.println("按照第一元素比较  第二种方法");
//        for (int i = 0; i < a1.length; i++) {
//            System.out.println(Arrays.toString(a2[i]));
//        }
    }
}

 2、按照第二元素比较

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

public class helloworld {
    public static void main(String[] args) {
        int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};
        int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};
        Arrays.sort(a1, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[1]-o2[1];
            }
        });
        System.out.println("按照第二元素比较  第一种方法");
        for (int i = 0; i < a1.length; i++) {
            System.out.println(Arrays.toString(a1[i]));
        }

        Arrays.sort(a2,(a, b)->(a[1]-b[1]));
        System.out.println("按照第二元素比较  第二种方法");
        for (int i = 0; i < a1.length; i++) {
            System.out.println(Arrays.toString(a2[i]));
        }
    }
}

3、二维数组降序排序

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

public class helloworld {
    public static void main(String[] args) {
        int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};
        int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};
        Arrays.sort(a1, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o2[0]-o1[0];
            }
        });
        System.out.println("按照第一元素比较  第一种方法  降序");
        for (int i = 0; i < a1.length; i++) {
            System.out.println(Arrays.toString(a1[i]));
        }

        Arrays.sort(a2,(a, b)->(b[0]-a[0]));
        System.out.println("按照第一元素比较  第二种方法  降序");
        for (int i = 0; i < a1.length; i++) {
            System.out.println(Arrays.toString(a2[i]));
        }
    }
}

总结

对于Arrays.sort(),可以进行重载比较器来自定义比较,可以升序排序也可以降序排序

在重载或者Arrays.sort(a2,(a, b)->(b[0]-a[0]));中

我们观察(a,b),若a-b或者比较器里面return a-b,则是升序排序

若b-a或者比较器里面return b-a,则是降序排序。

 

 

  • 22
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值