[英]how to sort with different number of digits in java?
我用f.listFiles()在目录中创建了一个文件列表。
不幸的是,它们的命名非常不同:
001.pdf
098.pdf
100.pdf
1000例.pdf
现在,目录中的文件数组在100.pdf之前设置1000.pdf。
如何对此进行排序以使文件以正确的顺序返回?
感谢帮助!
您可以在空格前添加相同长度的名称:
File[] files = f.listFiles();
if(files != null) {
Arrays.sort(files, new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
return String.format("%100s", o1.getName()).compareTo(
String.format("%100s", o2.getName()));
}
});
System.out.println(Arrays.toString(files));
}
如果您使用的是Java-8,则更短:
File[] files = f.listFiles();
if(files != null) {
Arrays.sort(files, Comparator.comparing(file -> String.format("%100s", file.getName())));
System.out.println(Arrays.toString(files));
}
如果您有一个字符串数组,您可以编写自定义比较器
public class StringComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
int n1 = Integer.parseInt(s1.substring(0, s1.indexOf(".") - 1));
int n2 = Integer.parseInt(s2.substring(0, s2.indexOf(".") - 1));
return n1 - n2;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.