Java 文件列表未使用比较器排序

标签 java file sorting comparator comparable

我有一个包含一些文件的文件列表。 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);

关于Java 文件列表未使用比较器排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56637873/

相关文章:

java - 使用异步 http 提高吞吐量

java - Cassandra:分区键只支持 EQ 和 IN 关系(除非你使用 token() 函数)

Java:在 File 对象的文件名中包含文件夹路径

android - android中ListView的过滤和排序问题

c# - 在 C# 中对对象数组进行排序(相当于 std::sort)

java - JDBC mysql Wamp

java - 如何在android中创建线性布局和中心按钮?

Java:部分路径存在,文件的部分名称

arrays - Perl:使用 while 将文件加载到哈希中

javascript - 如何在 Javascript 中对项目类别进行排序