我正在尝试对fList数组中的文件名进行排序。最初fList像这样https://i.stack.imgur.com/OCqJR.jpg进行排序,并在结果https://i.stack.imgur.com/GgBsq.jpg之后

我想要根据文件名之前的先前编号对结果进行排序,如下所示:



硒介绍


完整的Java和Selenium学习安装指南


复习Selenium Automation的Java概念


适用于手动测试人员和初学者的CORE JAVA深入介绍



...



奖金!!学生特别



我有something()方法从fList[x]文件名中获取数字,以便以后在执行swap(fList[x], fList[y])时进行比较,正如您可以从输出控制台中得知的那样。
我不确定我是否理解File[]如何实际存储和更改其元素

public static void main(String[] args) {

        File file = new File("pathToFolder");
        File[] fList = file.listFiles();
        for(int x = 0; x < fList.length; x++) {
            int numberX = something(fList[x]);
            for(int y = x; y < fList.length; y++) {
                int numberY = something(fList[y]);
                if(numberX > numberY) {
                    File temp = fList[x];
                    fList[x] = fList[y];
                    fList[y] = temp;
                }
            }
        }
        for(int x = 0; x < fList.length; x++) {
            System.out.println(fList[x].getName());
        }

    }

    static int something(File file) {
        String temp = file.getName();
        String number = "";
        for(int st = 0; st < temp.length(); st++) {
            if(temp.charAt(st) == '.') break;
            number += temp.charAt(st);
        }
        int fileNumber = Integer.parseInt(number);
        return fileNumber;
    }

最佳答案

下面的代码怎么样:

public static void main(String[] args) {
    File file = new File("pathToFolder");
    File[] fList = file.listFiles();
    Map<Integer, File> fileMap = new TreeMap<Integer, File>();
    for (int x = 0; x < fList.length; x++) {
        int numberX = something(fList[x]);
        fileMap.put(numberX, fList[x]);
    }

    fileMap.forEach((k, v) -> System.out.println((v.getName())));

}

static int something(File file) {
    String temp = file.getName();
    String number = temp.split("\\.")[0];
    int fileNumber = Integer.parseInt(number);
    return fileNumber;
}

10-07 14:14