Java 排序内容记录
前言
一、数组排序
int[] lius={1,3,5,7,9,11,13,15,2,4,6,8,10,12,14};
Arrays.sort(lius);//升序(由小到大)
Integer[] liu={1,3,5,7,9,11,13,15,2,4,6,8,10,12,14}; //必须是大写的包装类才可以
Arrays.sort(liu, Collections.reverseOrder());//降序(由大到小)
Arrays.stream(lius).forEach(System.out::println);
Arrays.stream(liu).forEach(System.out::println);
//倒序排序
//(1)由于不提供降序方法,你可以倒叙输出
System.out.println("降序输出:");
for (int i = liu.length - 1; i >= 0; i--) {
System.out.println(array[i]);
}
List<Integer> integers = Ints.asList(lius);
integers.forEach(System.out::println);//原数组
Collections.sort(integers);
integers.forEach(System.out::println);//升序
Collections.reverse(integers);
integers.forEach(System.out::println);//降序
//引用类型数组排序
File[] files = new File("D:\\chromelog\\CB001A10405").listFiles();
//Arrays.sort(files);//如果这样直接写是不排序的;
Arrays.sort(files,(x,y) -> {
long l = x.lastModified()-y.lastModified();
return l>0?-1:1;//降序
// return l>0?1:-1;//升序
});
for (File file : files) {
System.out.println(file.getName());
}
二、集合排序
//文件排序
File[] files = new File("D:\\chromelog\\log").listFiles();
List<File> files1 = Arrays.asList(files);
Collections.sort(files1,(x,y) -> {
long l = x.lastModified()-y.lastModified();
return l>0?-1:1;//降序
// return l>0?1:-1;//升序
});
for (File file1 : files1) {
System.out.println(file1.getName());
}
//这样写与上面的相同
File[] files = new File("D:\\chromelog\\CB001A10405").listFiles();
List<File> files1 = Arrays.asList(files);
Collections.sort(files1, new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
long l = o1.lastModified()-o2.lastModified();
return l>0?1:-1;//升序
//return l>0?-1:1;//降序
}
});
for (File file1 : files1) {
System.out.println(file1.getName());
}
//如果是集合是基本类型的可以直接sort;
List<Integer> integers = Ints.asList(lius);
integers.forEach(System.out::println);//原数组
Collections.sort(integers);
integers.forEach(System.out::println);//升序
Collections.reverse(integers);
integers.forEach(System.out::println);//降序
总结:
数组的排序&集合的排序
两者的共性:对引用类型进行排序需要Comparator来处理,使用lambda更方便;对基本类型可以直接使用;