Arrays.sort()的用法记录
1、Arrays.sort(int[] a)
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
Arrays.sort(a);
for(int i = 0; i < a.length; i ++) {
System.out.print(a[i] + " ");
}
}
}
2、Arrays.sort(int[] a, int fromIndex, int toIndex)
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
//注意是左闭右开
Arrays.sort(a, 0, 3);
for(int i = 0; i < a.length; i ++) {
System.out.print(a[i] + " ");
}
}
}
3、public static void sort(T[] a,int fromIndex,int toIndex, Comparator c)其中索引参数可有可无,参考一、二
import java.util.Arrays;
import java.util.Comparator;
public class TestArrays {
public static void main(String[] args) {
//注意,要想改变默认的排列顺序,不能使用基本类型(int,double, char)
//而要使用它们对应的类
Integer[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
//定义一个自定义类MyComparator的对象
Comparator cmp = new MyComparator();
Arrays.sort(a, cmp);
for(int i = 0; i < a.length; i ++) {
System.out.print(a[i] + " ");
}
}
}
//Comparator是一个接口,所以这里我们自己定义的类MyComparator要implements该接口
class MyComparator implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2) {
//return o1-o2 是升序,即o1 > o2 返回正数 现在颠倒即可降序
//如果o1小于o2,我们就返回正值,如果n1大于n2我们就返回负值,
//这样颠倒一下,就可以实现反向排序了
// if(o1 < o2) {
// return 1;
// }else if(o1 > o2) {
// return -1;
// }else {
// return 0;
// }
return o2 - o1;
}
}
4、其他写法
** 对于第三种也可以使用简写,不用封装成类**
import java.util.Arrays;
import java.util.Comparator;
public class TestArrays {
public static void main(String[] args) {
Integer[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
//和上面的类似,只是直接把类的实现作为参数
Arrays.sort(a, new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
for(int i = 0; i < a.length; i ++) {
System.out.print(a[i] + " ");
}
}
}
还可以再简单点
import java.util.Arrays;
public class TestArrays {
public static void main(String[] args) {
Integer[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
Arrays.sort(a, (o1, o2) -> o1 - o2);
for(int i = 0; i < a.length; i ++) {
System.out.print(a[i] + " ");
}
}
}
不过貌似不太好,会提示转换为, 也就是下面这样。看源码没太看懂,有大佬可以告诉一下,不懂这个参数是怎么用的
import java.util.Arrays;
import java.util.Comparator;
public class TestArrays {
public static void main(String[] args) {
Integer[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
Arrays.sort(a, Comparator.comparingInt(o -> o));
for(int i = 0; i < a.length; i ++) {
System.out.print(a[i] + " ");
}
}
}
5、二维数组的写法
数组排序就是把数组的元素进行排序,二维数组的元素即是一维数组,把相应的元素类型改成一维数组即可
Arrays.sort(p, new Comparator<int[]>() {
public int compare(int[] p1, int[] p2) {
return p1[1] - p2[1];
}
});
//或者
Arrays.sort(p, (p1, p2) -> p1[1] - p2[1]);