2014-04-04 112 views

回答

0

Java7或更低:的
fge


Java8

final FTPFile[]   files = new FTPFile[100]; //or what ever  
final Comparator<FTPFile> sorter = (e1, e2) -> e1.getTimestamp().compareTo(e2.getTimestamp()); 

Arrays.sort(files, sorter); 
+0

结果是'虽然Stream',不是数组 – fge

+0

编辑,对提示:) – ifloop

0

编写自定义ComparatorFTPFile对象,然后用使用Arrays.sort()Comparator

请注意,此方法将排列在适当位置

假设你正在谈论Apache的公网FTPFile,比较可以写成这样:

private static final Comparator<FTPFile> CMP = new Comparator<>() 
{ 
    @Override 
    public int compare(final FTPFile a, final FTPFile b) 
    { 
     return a.getTimeStamp().compareTo(b.getTimeStamp()); 
    } 
} 

如果使用Java 8再看看@ ifLoop的解决方案

0

假设FTPFile是一种java文件,或者可以翻译得到一个

Collections.sort(list,comparator),你可以使用下面的比较器:

class FileComparator implements Comparator<File> { 

@Override 
public int compare(File o1, File o2) { 

    try { 
     BasicFileAttributes attr1 = Files.readAttributes(o1.toPath(), BasicFileAttributes.class); 
     BasicFileAttributes attr2 = Files.readAttributes(o2.toPath(), BasicFileAttributes.class); 
     return attr1.lastModifiedTime().compareTo(attr2.lastModifiedTime()); 

    } catch (IOException e) { 
     // Handle this the way you want 
     e.printStackTrace(); 
    } 
    return 0; 
} 

}

+1

非常糟糕的主意来处理IOException异常这样的感谢! – fge

+0

这是由开发人员来处理异常,这只是样本:) – Anshuman

+1

不过,你基本上是因为很差的异常处理拙劣的比较器 – fge

相关问题