【发布时间】:2013-05-16 08:31:48
【问题描述】:
我知道有很多与我类似的问题,但我没有得到任何答案(我觉得我错过了一些东西......)但无论如何:
我有一个 LinkedList 。在我的程序中,用户应该能够根据文件的最后修改时间对列表进行排序。
例如,我尝试在我的程序中根据这两个实现一些东西:Finding the 3 most recently modified files in a long list of files 和Get 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
}
编辑 我最大的问题(也许?)是当我的方法完成时,它确实更新了视图,但不是以正确的方式:“旧”列表仍然是一样的,但在底部有一些不应该的东西...:
- file1.jpg
- file2.jpg
- ..
- ..
- ..
- imagelist.txt
- bin
- 源代码
- 设置
- 项目
- 类路径
(imagelist.txt 是存储图像路径的文本文件),出于某种原因,这是我在更新视图后可以看到的列表。
编辑 2 File[] file = new File(".").listFiles();
输出:[Ljava.io.File;@3e2a9a49 所以我想这将是实际问题......?我试图做的是将文件从我的 LinkedList 放到这个数组中,但我想我做错了什么,从第一个链接得到了这个 sn-p ......如果这样做,什么是合适的方法?离正确的路很近。
提前谢谢你,希望我的问题有点道理,你们不要太评价我:) 我知道我现在让这很混乱......
【问题讨论】:
-
创建一个适当的
Comparator并将其传递给Collections.sort()。 docs.oracle.com/javase/7/docs/api/java/util/… -
你尝试实现某人的代码,但它不起作用?为什么不发布一个最低工作示例,我们可以帮助找出问题所在。
标签: java linked-list java-7 last-modified