我使用java数组列表按大小对目录中的文件进行排序&&如何在java中按元素大小对ArrayList进行排序?
我的问题是实现比较器的最佳方式是什么,这样排序会更快?我被告知100K文件的排序应该在几秒钟内完成,而不是在几分钟内,因为文件的大小是长的。是否有更好的方法来实现比较器?
public static List<File> sortFilesBySize(List<File> xmlFileList) {
xmlFileList.sort(Comparator.comparing(File::length).reversed());
return xmlFileList;
}
private static List<File> xmlFileList = new ArrayList<File>();
pathList = pathList.subList(0,filterCount);
for (Path filePath : pathList)
xmlFileList.add(filePath.toFile());
long startSortMillis = System.currentTimeMillis();
sortFilesBySize(xmlFileList);
long timeInMillis = System.currentTimeMillis() - startSortMillis;
可以观察到,在20K之后,排序需要几分钟。我有什么建议可以降低排序时间吗?
我还查阅了https://docs.oracle.com/javase/8/docs/api/java/io/file.html,看看是否可以改进当前的实现,但似乎什么也没有跳出来。
它确实是由对file.length()
的系统调用引起的。它们的数量随着文件数量的增加而线性增加。按照建议进行缓存。你会发现排序时间几乎消失了。
我有一个,其中的键是字符串。我需要获取这些键并根据键大小(即字符串长度)对其进行排序,然后将其存储在某个中。 注意:如果两个键的大小相同,那么我们可以把它放在任何顺序。 为(如)。
我有学生(弦)和老师(弦列表)。我想根据讲师人数按降序提取记录。讲师如下示例:[a、b、c]-3、[e、f]-2、[g、h、i、j]-4。 我要按4,3,2的顺序。 这取决于现场讲师阵列的大小。如何使用mongoTemplate或自定义mongodb查询或聚合进行查询??
我有一个java应用程序-一个计算器。我想通过调整应用程序窗口的大小来动态调整按钮的字体大小。如何实现? 我的想法是使用ComponentEvents。我有应用程序窗口的初始大小和初始字体的大小。我想根据按钮的大小改变字体大小,受窗口大小变化的影响。问题是如何在覆盖方法中使用比例[初始窗口大小]/[初始字体大小]?每个字体的比例都不同。
问题内容: 我只是想弄清楚如何根据名称,上次修改时间和大小对目录列表进行排序。我知道您可以访问文件的名称,大小,最后使用File方法修改的时间,但是我不确定如何对其进行排序。如果有人能指出我正确的方向,那就太好了。 问题答案: 您应该实现一个Comparator来根据您提到的属性对文件进行排序,并将其作为参数传递给Arrays.sort方法。
对LinkedHashMap进行排序
我不能做的是找到一种方法来改变Vbox的尺寸(绿色段),然后根据窗口的大小改变按钮(橙色段)。(当用户使用窗口大小时) 我更喜欢找到一种方法将参数设置到我的css文件中,或者作为最后的手段在我的FXML中。 .css文件: