java - 未使用 Comparator 对文件进行排序的 Java 列表
问题描述
我有一个包含一些文件的文件列表。
List<File> filesToProcess = new ArrayList();
此列表的元素是:
abc20190101.txt
abc20190103.txt
abc20190105.txt
abc20190102.txt
abc20190104.txt
所以我想使用文件名对其进行排序:我编写了以下代码:
Collections.sort(filesToProcess, new Comparator<File>() {
@Override
public int compare(File file1, File file2) {
return file1.getName().compareTo(file2.getName())>0 ? 1 : 0;
}
});
但这似乎不起作用。
事实上,当打印到控制台时,我得到的顺序与创建列表的顺序相同。有人可以帮忙吗。
解决方案
尝试这个。我根据提供的名称创建了一个文件列表。
String[] filenames = {
"abc20190101.txt", "abc20190103.txt", "abc20190105.txt",
"abc20190102.txt", "abc20190104.txt"
};
List<File> filesToProcess =
Arrays.stream(filenames).map(File::new).collect(
Collectors.toList());
Collections.sort(filesToProcess, new Comparator<File>() {
@Override
public int compare(File file1, File file2) {
// just use compareTo here since String implements Comparable<String>
return file1.getName().compareTo(file2.getName());
}
});
filesToProcess.forEach(System.out::println);
推荐阅读
- python - 代表蜂窝格子的最佳方式是什么?
- javascript - 如何在成对元素上应用相同的功能
- sql - 使用动态 SQL 将参数传递给存储过程到透视数据
- laravel - 具有 Laravel 和多对多关系的 Metronic 数据表
- ruby-on-rails - Ruby on rails 从控制器路由到 html 文件
- php - 序列化为 JSON 时 PHP 中的意外行为
- python - 使用循环生成定义范围内的随机数
- delphi - Delphi:使用带有 SSL 和 office365 的 Indy 10 SMTP
- python - 如何使用 python 在带有硒的 DatePicker 中选择日期
- python - 将对象插入特定列表索引