Java做题常用的类(缓慢更新)

283 阅读1分钟

排序

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); //