2014-04-04 103 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

相關問題