【问题标题】:Further clarification on "sorting files by last modified in java- efficient way"进一步澄清“以java高效方式按最后修改排序文件”
【发布时间】:2026-02-02 13:20:02
【问题描述】:

这个问题已经在这里问过很多次了。它只是对Finding the 3 most recently modified files in a long list of files 此处提供的解决方案之一的参考。

我尝试向解决方案添加评论,但我没有足够的声誉点来评论,所以我在这里问它。该解决方案提供了一种按上次修改时间对文件进行排序的方法。

public static void sortFilesDesc(File[] files) 
{        
    File firstMostRecent = null;
    File secondMostRecent = null;
    File thirdMostRecent = null;
    for (File file : files) {
        if ((firstMostRecent == null)
                || (firstMostRecent.lastModified() < file.lastModified())) {
            thirdMostRecent = secondMostRecent;
            secondMostRecent = firstMostRecent;             
            firstMostRecent = file;
        } else if ((secondMostRecent == null)
                || (secondMostRecent.lastModified() < file.lastModified())) {
            thirdMostRecent = secondMostRecent;
            secondMostRecent = file;
        } else if ((thirdMostRecent == null)
                || (thirdMostRecent.lastModified() < file.lastModified())) {
            thirdMostRecent = file;
        }
    }
}

该方法将文件数组作为参数,并假设根据最后修改的顺序对它们进行排序。 我从这种方法中不明白的是它如何修改输入数组以便对其中的所有元素进行排序。在代码中,我们也只是改变了局部变量 firstMostRecent、secondMostRecent 和 thirdMostRecent 的值。数组是如何被修改的?我的理解中可能缺少一些东西,但我没有得到它。请澄清我的困惑。

【问题讨论】:

    标签: java arrays sorting


    【解决方案1】:

    输入数组未修改。 这是找出第一个、第二个和第三个最后修改文件的代码。就是这样。

    执行该for 循环后,您可以获得前3 个最后修改的文件。

    【讨论】:

    • 哦,好吧。在那篇文章中没有人提到这一点。问题是对大量文件进行排序。我希望它会以某种方式对整个数组进行排序。谢谢@vengets
    最近更新 更多