gpt4 book ai didi

java - 根据文件的最后修改时间对 LinkedList 进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:58 24 4
gpt4 key购买 nike

我知道有很多与我类似的问题,但我对这些答案一无所知(我觉得我遗漏了什么......)但无论如何:

我有一个链表。在我的程序中,用户应该能够根据文件的最后修改时间对列表进行排序。

例如,我尝试根据这两个来实现一些东西:Finding the 3 most recently modified files in a long list of filesGet files in a directory sorted by last modified?在我的程序中,但我似乎没有对列表进行排序。

对于第一个链接:返回 1、-1 或 0 有什么用?它实际上有什么作用,还是我应该添加一些代码来将它在列表中向上或向下移动?

我想我应该使用其中任何一个,对吧?我想知道该代码是否足够,或者我是否必须添加更多内容才能使其正常工作?

注意。我想在现有类中创建一个新方法。

所以这是我尝试做的:

public static final Comparator<File> lastModified = new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
return o1.lastModified() == o2.lastModified() ? 0 : (o1.lastModified() < o2.lastModified() ? 1 : -1);
}
};
public void testFileSort() {

File[] file = new File(".").listFiles();
Arrays.sort(file, lastModified);
//a snippet to actually update what the user sees
}

编辑我最大的问题(也许?)是当我的方法完成后,它确实更新了 View ,但不是以正确的方式:“旧”列表仍然相同,但在底部有一些不应该的东西……:

  • 文件1.jpg
  • 文件2.jpg
  • ..
  • ..
  • ..
  • 图像列表.txt
  • 来源
  • 设置
  • 项目
  • 类路径

(imagelist.txt 是存储图像路径的文本文件),出于某种原因,这是我在更新 View 后可以看到的列表。

编辑 2File[] file = new File(".").listFiles();

输出:[Ljava.io.File;@3e2a9a49所以我想这将是实际问题......?我想做的是将我的 LinkedList 中的文件放到这个数组中,但我想我做错了什么,从第一个链接中得到了这个片段......如果这是任何地方,这样做的合适方法是什么靠近正确的路要走。

提前谢谢你,希望我的问题是有道理的,你们不要对我评价太多:)我知道我现在让这很困惑......

最佳答案

您的第一个链接中的代码就足够了,只需使用链接列表而不是文件数组。实际上,比较是在比较器内部进行的。要使比较器通用,它只需要知道下一个元素是更大、更小还是相等。它不需要知道元素本身的任何细节。因此,在比较器函数中,您正在处理逻辑(上次修改时间是否更早),并基于该逻辑向比较器逻辑发送 1、-1 或 0 的信息,让它知道它更大、更小或等于到比较元素。希望这是有道理的。

关于java - 根据文件的最后修改时间对 LinkedList<File> 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16582574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com