gpt4 book ai didi

java - 如何根据整数名称对目录进行排序?

转载 作者:行者123 更新时间:2023-12-02 09:39:13 25 4
gpt4 key购买 nike

您好,我想根据数字对目录列表进行排序。我有名为 11-20,1-5,6-10,21-30 等的目录。现在我想根据其中的数字对它们进行排序,以便 1 到 N 的目录按顺序排列意思是按 1-5,6-10,11-20,21-30 的顺序排列。我正在使用以下代码,但它不起作用。

File[] dirList = mainDir.listFiles();
Arrays.sort(dirList);

我对 Java 中的文件和目录操作不熟悉,请提前提供帮助,谢谢。

最佳答案

以下行:

Arrays.sort(dirList);

使用 File#compareTo() 方法对文件进行排序,该方法基本上按路径名对文件进行排序。

您必须创建 Comparator 的自定义实现然后调用:

Arrays.sort(dirList, new YourCustomComparator());

例如:

Comparator<File> comparator = new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
/*
* Here, compare your two files with your own algorithm.
* Here is an example without any check/exception catch
*/
String from1 = o1.getName().split("-")[0]; //For '1-5', it will return '1'
String from2 = o2.getName().split("-")[0]; //For '11-20', it will return '11'

//Convert to Integer then compare :
return Integer.parseInt(from2)-Integer.parseInt(from1);
}
}

//Then use your comparator to sort the files:
Arrays.sort(dirList, comparator);

关于java - 如何根据整数名称对目录进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18379187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com