今天leetcode刷题时,需要对char[]进行降序排列,
按照平常的想法,于是就这么写了
Arrays.sort(a, (c1, c2) -> c2.compareTo(c1));
但是竟然报错,我百度了半天,得到下面的答案:
1、int[],double[],char[]等基数据类型的数组,Arrays类之只是提供了默认的升序排列,没有提供相应的降序排列方法。
2、要对基础类型的数组进行降序排序,需要将这些数组转化为对应的封装类数组,如Integer[],Double[],Character[]等,对这些类数组进行排序。
所以上面这段代码可以这么写:
Arrays.sort(b);
for (int i = 0, j = b.length - 1; i < j; i++, j--) {
char tmp = b[i];
b[i] = b[j];
b[j] = tmp;
}
即先升序,然后再逆转。