这里对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(); } }
(比较里 返回正值的情况,则两个值交换)