本博文的组织架构:
代码演示
1.对基本数据类型数组的排序
int[] array = new int[]{1,56,-5,33};
Arrays.sort(array);
System.out.println(Arrays.toString(array ));
2.对对象数组的排序
/*外部比较器:需要自己写一个比较器实现Comparator接口,并实现compare(T o1, T o2)方法,根据自己的需求定义比较规则。使用外部比较器这种方式比较灵活。例如现在需求是按照员工编号和薪资进行排序,以后可能按照姓名进行排序,这时只要再写一个按照姓名规则比较的比较器就可以了。*/
int[][] c = new int[][2];
Arrays.sort(c, new Comparator<int[]>() { //对二维数组进行排序
public int compare(int[] a[],int[] b) {
if(a[1] == b[1])
return a[0] - b[0]; // 相等再按第二列排序
return a[1] - b[1]; //表示先按第一列升序
});
说明:
(1) 若一个类要实现Comparator接口:它一定要实现compareTo(T o1,T o2) 函数,但可以不实现 equals(Object obj) 函数。
为什么可以不实现 equals(Object obj) 函数呢? 因为任何类,默认都是已经实现了equals(Object obj)的。 Java中的一切类都是继承于java.lang.Object,在Object.java中实现了equals(Object obj)函数;所以,其它所有的类也相当于都实现了该函数。
(2) int compare(T o1, T o2) 是“比较o1和o2的大小”。返回“负数”,意味着“o1比o2小”;返回“零”,意味着“o1等于o2”;返回“正数”,意味着“o1大于o2”。