【发布时间】:2014-04-29 02:49:15
【问题描述】:
我正在使用 Java 的 Arrays.sort() 函数按文件的最后修改时间对文件列表进行排序。 245 个文件的排序大约需要 5 秒。这对我来说似乎太长了。我觉得不应该超过0.5秒。这是一个很好的假设吗?我究竟做错了什么?或者这听起来正常吗?
public static class LastModifiedComparator implements Comparator<File> {
@Override
public int compare(File f1, File f2) {
return (int)(f1.lastModified() - f2.lastModified());
}
}
File folder = new File( "C:\\Whatever\\" );
File[] filesInFolder = folder.listFiles();
logger.debug("Starting File Sort");
Arrays.sort(filesInFolder, new LastModifiedComparator());
logger.debug("Done File Sort");
日志输出
2012-08-10 14:24:20,333 DEBUG http-8080-4 <ClassName>:73 - Starting File Sort
2012-08-10 14:24:25,915 DEBUG http-8080-4 <ClassName>:75 - Done File Sort
【问题讨论】:
-
如果文件是唯一的(都有不同的 equals 方法),使用 TreeSet 看看会发生什么会很有趣。您可能必须将文件包装在另一个实现比较器的类中。不过 5 秒似乎确实很长!
-
文件夹中有多少个文件?
-
您也尝试过将它作为一个集合并使用 ArrayList 和 Collections.sort()。有什么不同吗?
-
您没有告诉我们您要排序的数组有多大。很可能数组非常很大。