java中Arrays的排序介绍

1 一维数组

有一下几种排序方式:

  • 默认顺序排序
    int [] a = {4,5,3,1,7};
    Arrays.sort(a);
    
  • 倒序排序
  1. 使用Collections.reverseOrder()对其进行倒序排序,但是必须将数据的类型改成`Integer类型,否则不能进行。
    Integer [] a = {4,5,3,1,7}; 
    Arrays.sort(a, Collections.reverseOrder());
    
  2. 实现Comparator接口中的Compare()方法
    单独实现该接口:
    class MyComparator implements Comparator<Integer>{
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2-o1;
        }
    }
    Integer [] a = {4,5,3,1,7};
    MyComparator myComparator = new MyComparator();
    Arrays.sort(a, myComparator);
    
    使用匿名类的方式实现:
    Integer [] a = {4,5,3,1,7};
    Arrays.sort(a, new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    });
    

2 二维数组

如果是升序,是o1 - o2,如果是倒序则是o2 - o1

  • 按二维数组的行进行排序:

    int[][] a = new int[][]{
       {4,5},{0,1},{1,2},{1,3},{2,5},{3,4}
    };
    Arrays.sort(a, Comparator.comparingInt(o -> o[0]));
    //Arrays.sort(a, (o1, o2) -> (o1[0] - o2[0]);//匿名
    

    排序结果为:

    0 1
    1 2
    1 3
    2 5
    3 4
    4 5

  • 按二维数组的列进行排序

    int[][] a = new int[][]{
    	{4,5},{0,1},{1,2},{1,3},{2,5},{3,4}
    };
    Arrays.sort(a, (o1, o2) -> (o1[1] - o2[1]));
    

    排序结果为:

    0 1
    1 2
    1 3
    3 4
    4 5
    2 5

你可能感兴趣的:(java,面试,java,快速排序,排序算法)