[英]I don´t know how to change my program so that i can see the ten largest files
我需要編寫一些統計數據,例如對文件進行計數等。但我在其中一項任務中遇到了問題:編寫代碼以識別 10 個最大的文件。
我的問題是我不知道如何開始。 我有代碼來獲取最大的文件。 但是我怎樣才能得到十個最大的文件呢? 這是一個顯示最大文件的類。
@Override
public String getDescription() {
return "find largest file";
}
@Override
public void printResults(List<File> files) {
File largest = files.get(0);
for (File f : files)
if (f.length() > largest.length())
largest = f;
System.out.println("Largest file: " + largest.getName() + " (" + largest.length() + " bytes)");
}
您可以按文件大小對文件進行排序並獲取前 10 個元素。 請注意,如果您的任何文件非常大,您將使用此代碼得到奇怪的結果:
@Override
public void printResults(List<File> files) {
files.sort((file1,file2) -> (int)(file1.length()-file2.length())); // This will NOT work correctly if any of the files are over 2.7 GB in size.
List<File> largest = files.subList(0, files.size() > 10 ? 10 : files.size());
System.out.println("Largest files:");
for(File file : largest) {
System.out.println(file.getName() + " (" + file.length() + " bytes)");
}
}
您可以使用 Java Stream API 對文件列表進行排序和限制:
files.stream()
.sorted(Comparator.comparingLong(File::length).reversed())
.limit(10)
.forEach(f -> System.out.println(f.getName() + " (" + f.length() + " bytes)"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.