3 回答
TA贡献1772条经验 获得超6个赞
您可以将Collections.sort()与自定义比较器一起使用,该比较器比较每个文件名的整数前缀,如下面的 ArrayList files:
Collections.sort(files, new Comparator<String>() {
public int compare(String s1, String s2) {
int s1Num = Integer.valueOf(s1.split("[.jpg]")[0]);
int s2Num = Integer.valueOf(s2.split("[.jpg]")[0]);
if (s1Num == s2Num) { return 0; }
else if (s1Num < s2Num) { return -1; }
else { return 1; }
}
});
for (String file: files) {
System.out.println(file);
}
输出:
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
10.jpg
11.jpg
12.jpg
13.jpg
14.jpg
15.jpg
16.jpg
17.jpg
18.jpg
19.jpg
20.jpg
21.jpg
22.jpg
TA贡献1801条经验 获得超8个赞
当然是这个顺序。这些文件不是按算术排序而是按字典排序。您必须重命名所有单个数字文件以包含前导零以实现您期望的顺序或编写自定义排序方法并将其应用于包含您的文件名的列表。
添加回答
举报