簡體   English   中英

我不知道如何更改我的程序以便我可以看到十個最大的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM