我正在從FTP服務器輪詢文件。我有一個用例來根據時間戳排序數組FTPFile []。我想先修改文件作爲第一個對象,最後修改文件作爲我的FTPFile []數組對象中的最後一個對象。如何根據java中的時間戳對FTPFile []數組對象進行排序
有人可以請建議我如何在Java中做。由於
我正在從FTP服務器輪詢文件。我有一個用例來根據時間戳排序數組FTPFile []。我想先修改文件作爲第一個對象,最後修改文件作爲我的FTPFile []數組對象中的最後一個對象。如何根據java中的時間戳對FTPFile []數組對象進行排序
有人可以請建議我如何在Java中做。由於
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);
編寫自定義Comparator
爲FTPFile
對象,然後用使用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的解決方案
假設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;
}
}
結果是'雖然Stream',不是數組 – fge
編輯,對提示:) – ifloop