Java里的数组降序
Java升序容易,降序不易。
基本类型不能降序,至少要是包装类。
升序使用Arrays.sort()
降序要么使用Collections.reverse,要么实现Comparator接口
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class TestJava升序降序 {
public static void m1升序() {
int _arr[] = { 5, 3, 1, 2, 4 };
// 类,或包装类
Arrays.sort(_arr);
System.out.println("升序 输出数组:");
for (int i : _arr) {
System.out.print(i);
}
System.out.println();
}
public static void _printArr(String _msg, Integer _arr[]) {
System.out.println(_msg + " 输出数组:");
for (Integer i : _arr) {
System.out.print("\t" + i);
}
System.out.println();
}
public static void 降序_Comparator版() {
// 类,或包装类
Integer[] _arr = { 5, 3, 1, 2, 4 };
// -----------------------------------------------
Arrays.sort(_arr, new DescComparator());
_printArr("降序sort版(实现独立的Comparator)", _arr);
// -----------------------------------------------
_arr = new Integer[] { 5, 3, 1, 2, 4 };
Arrays.sort(_arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
_printArr("降序sort版(Comparator匿名内部类)", _arr);
// -----------------------------------------------
_arr = new Integer[] { 5, 3, 1, 2, 4 };
Arrays.sort(_arr, (Integer o1, Integer o2) -> o2 - o1);
_printArr("降序sort版(Comparator的Lambda表达式)", _arr);
}
public static void 降序_集合转置版() {
Integer _arr[] = { 5, 3, 1, 2, 4 };
// 1.排序
Arrays.sort(_arr);
// 2.转成List
List<Integer> asList = Arrays.asList(_arr);
// 3.借助集合的reverse方法
Collections.reverse(asList);
_printArr("降序_集合转置版", _arr);
}
public static void main(String[] args) {
m1升序();
降序_Comparator版();
降序_集合转置版();
}
}
class DescComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}
运行结果:
升序 输出数组:
12345
降序sort版(实现独立的Comparator) 输出数组:
5 4 3 2 1
降序sort版(Comparator匿名内部类) 输出数组:
5 4 3 2 1
降序sort版(Comparator的Lambda表达式) 输出数组:
5 4 3 2 1
降序_集合转置版 输出数组:
5 4 3 2 1