排序
Java排序,可以用Arrays类的sort方法。没有返回值。
Arrays.sort()可以将基本数据类型的数组进行升序排序,但是无法直接进行降序。
如果要实现降序功能,就要实现Comprator接口。但这个接口是泛型接口,传进去的参数只能是类。 所以需要把基本数据类型转换成包装类。
升序排序:
升序排序对于基本数据类型的数组都是适用的。
// 1. 对数组进行排序(默认是升序)
Arrays.sort(int[] a)
// 2. 对数组中某个区间内的数值进行排序
Arrays.sort(int[] a , int fromIndex, int toIndex)
// 3. 对字符串数组进行排序
Arrays.sort(String[] a)
重头戏,降序,还得是对象
前面说到的Comprator接口。
<T> void sort(T[] a, Comparator<? super T> c)
增加的这个接口Comparator,需要重写的方法只有两个
// 进行重写,实现降序排序的功能
Comparator<Integer> comparator = new Comparator<>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1; //
}
@Override
public boolean equals(Object obj) {
return false;
}
};
实现了接口后传入sort函数即可。
// 使用自动装箱技术
Integer[] b = {1, 2, 3};
Arrays.sort(b, comparator); // 没错,没有返回值,直接排序
字符串类型特别说一下
对于字符串类型的数组,sort()则是将字符串的开头字母进行排序,排列顺序为:
- 大写在小写前
- 从A~Z依次往下排
- 若第一位相同则比较第二位
- 若第二位也相同,依次往下比较
当然,如果想要按照字母表排序,忽略大小写的话,有下面这种方式
String[] s = {"123", "234"};
Arrays.sort(s, String.CASE_INSENSITIVE_ORDER); //