我想获取目录中的文件列表,但我想对其进行排序,使得最旧的文件是第一个.我的解决方案是调用File.listFiles,然后根据File.lastModified求助于列表,但我想知道是否有更好的方法.
编辑:我建议的当前解决方案是使用匿名比较器:
File[] files = directory.listFiles();
Arrays.sort(files, new Comparator<File>(){
public int compare(File f1, File f2)
{
return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
} });
Run Code Online (Sandbox Code Playgroud) 我有一个具有以下值的数组列表
ArrayList [Admin,Readonly,CSR,adminuser,user,customer]
Run Code Online (Sandbox Code Playgroud)
当我用的时候
Collections.sort(ArrayList)
Run Code Online (Sandbox Code Playgroud)
我得到了以下结果
[Admin,CSR,Readonly,adminuser,customer,user]
Run Code Online (Sandbox Code Playgroud)
根据Java文档,上面的结果是正确的,但我的期望是(排序与案例无关(大/小写)
[Admin,adminuser,CSR,customer,Readonly,user]
Run Code Online (Sandbox Code Playgroud)
提供帮助如何进行排序,无论java中的情况如何,是否有任何其他方法可用
注意:我将进行自动测试以检查Web表中的排序顺序
问候
prabu
所以我正在搜索一个巨大的ArrayList以查找特定的String值,但是如果我要查找的String与我传入的String相等(不区分大小写),则需要Collections.binarySearch()返回> = 0的值。 binarySearch()方法。
现在,在Collections.binarySearch()的源代码中,它最终将调用以下代码行。
Comparable<? super T> midVal = list.get(mid);
int cmp = midVal.compareTo(key);
Run Code Online (Sandbox Code Playgroud)
如此看来,我无法覆盖String作为其最终值(因此防止我覆盖其compareTo()方法以调用compareToIgnoreCase()),还有其他方法可以实现吗?
任何帮助将非常感谢。