1.调用Arrays.sort()对一维数组排序
import java.util.*;
public class Main {
public static void main(String[] args) {
//升序排列
int[] array = {6,1,7,8,5,3,2,10,9,4};
Arrays.sort(array);
System.out.println(Arrays.toString(array));
//降序排列
Integer[] array2 = {6,1,7,8,5,3,2,10,9,4};
Arrays.sort(array2,Collections.reverseOrder());
System.out.println(Arrays.toString(array2));
/*
上面的升序排列也可以写成:
Integer[] array = {6,1,7,8,5,3,2,10,9,4};
Arrays.sort(array);
System.out.println(Arrays.toString(array));
*/
}
}
运行结果:
2.通过实现Comparator接口完成二维数组/复合类型排序
import java.util.*;
public class Main {
public static void main(String[] args) {
int[][] array = {{5,0},{7,0},{6,0}};//定义了array[3][2]大小的二维数组
Arrays.sort(array,new MyComparator());//以一维数组的第一个元素的大小排序
for (int[] row:array)
System.out.println(Arrays.toString(row));//输出排序后二维数组
}
}
class MyComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
int[] a=(int[])o1;
int[] b=(int[])o2;
//升序
if (a[0]>b[0])
return 1;
if (a[0]<b[0])
return -1;
return 0;
//降序
/*if (a[0]>b[0])
return -1;
if (a[0]<b[0])
return 1;
return 0;*/
}
}
运行结果:
3.利用Collections.sort()对动态数组排序
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> arrayList3 = new ArrayList<Integer>();
for(int i=0;i<5;i++)
arrayList3.add(new Random().nextInt(100));//随机产生5个100以内的数add到ArrayList3
System.out.print("排序前:");
for (Integer r:arrayList3)
{
System.out.print(r+" ");
}
System.out.println();
Collections.sort(arrayList3, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if (o1>o2)
return 1;
if (o1<o2)
return -1;
return 0;
}
});
System.out.print("排序后:");
for (Integer r:arrayList3)
{
System.out.print(r+" ");
}
System.out.println();
}
}
运行结果:
总结一下:
java中常用的排序方法有Arrays.sort()和Collections.sort()两种:
Arrays.sort() 主要是针对各种数据类型(基本数据类型和引用对象类型)的数组元素排序。需要注意的是:比如int[],double[],char[]等基数据类型的数组,Arrays类只是提供了默认的升序排列,没有提供相应的降序排列方法;要对基础类型的数组进行降序排序,需要将这些数组转化为对应的封装类数组,如Integer[],Double[],Character[]等,对这些类数组进行排序(逆序需要实现Comparator接口)。
Collection.sort() 主要是针对集合框架中的动态数组,链表,树,哈希表等( ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap )进行排序。
另外,大家可以参考一下:
https://www.cnblogs.com/zz22–/p/10705970.html
https://www.cnblogs.com/xudong-bupt/p/3168618.html