Arrays.sort()

这里对Arrays.sort的基本用法进行一个总结说明:

常见形式

1、Arrays.sort(int[] a);      对数组a进行升序排序

2、Arrays.sort(int[] a,int fromIndex, int toIndex);    对数组a的部分进行排序,这部分为下标formIdex到toIndex,这里不包括下标为toIndex的元素

3、Arrays.sort(T[] a,int fromIndex, int toIndex, Comparator<? super T> c); 利用Comparator进行排序

package allSort;

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

public class sortCompar{

    public static void main(String[] args) {
        int[] a = new int[]{2,4,1,6,3,8,7,9};

        /*Arrays.sort(int[] a)
        这种形式对数组进行升序排序*/
        Arrays.sort(a);

        System.out.println("对数组进行整体排序:");
        for(int i:a){
            System.out.print(i+" ");
        }
        System.out.println();

        int[] b = new int[]{2,4,1,6,3,8,7,9};

        /*Arrays.sort(int[] a, int fromIndex, int toIndex)
        这种形式是对数组部分排序
        也就是对数组a的下标从fromIndex到toIndex-1的元素排序
        注意:下标为toIndex的元素不参与排序哦!*/
        Arrays.sort(b, 1,5);

        System.out.println("对数组下标从1到5排序:");
        for(int i:b){
            System.out.print(i+" ");
        }
        System.out.println();

        Integer[] c = new Integer[]{2,4,1,6,3,8,7,9};
        // Arrays.sort(T[] a,int fromIndex, int toIndex,  Comparator<? super T> c)
        Comparator myc = new MyComparator();
        Arrays.sort(c, myc);
        System.out.println("对数组进行整体排序:");
        for(int i:c){
            System.out.print(i+" ");
        }
        System.out.println();

    }
}

Comparator类的实现:

package allSort;

import java.util.Comparator;

public class MyComparator implements Comparator<Integer> {
    @Override
    public int compare(Integer o1, Integer o2) {
        // 降序排序
        //如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值,
        //这样颠倒一下,就可以实现反向排序了
        if(o1 < o2) {
            return 1;
        }else if(o1 > o2) {
            return -1;
        }else {
            return 0;
        }
//        return o2 - o1;  // 降序排序
//        return o1 - o2;  // 升序排序
    }
}

输出:

 

 利用lambda进行比较

package allSort;

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

public class sortCompar{

    public static void main(String[] args) {
       
        // lambda
        Integer[] d = new Integer[]{2,4,1,6,3,8,7,9};
        Arrays.sort(d, ((o1, o2) -> o1 - o2));
        System.out.println("对数组进行整体升序排序:");
        for(int i:d){
            System.out.print(i+" ");
        }
        System.out.println();
        Arrays.sort(d, ((o1, o2) -> o2 - o1));
        System.out.println("对数组进行整体降序排序:");
        for(int i:d){
            System.out.print(i+" ");
        }
        System.out.println();
       
    }
}

 

 在sort里直接new Comparator对象并实现比较方法

package allSort;

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

public class sortCompar{

    public static void main(String[] args) {
        
        // 直接定义Comparator函数形式
        Integer[] e = new Integer[]{2,4,1,6,3,8,7,9};
        // Arrays.sort(T[] a,int fromIndex, int toIndex,  Comparator<? super T> c)
        Arrays.sort(e, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });
        System.out.println("对数组进行整体升序排序:");
        for(int i:e){
            System.out.print(i+" ");
        }
        System.out.println();
    }
}

 

 

(比较里  返回正值的情况,则两个值交换)

 

posted @ 2021-05-29 16:41  +D  阅读(237)  评论(0编辑  收藏  举报