Java对字符串排序并获取文件名
排序内容
1-1. a.ev4
1-2. b.ev4
2-1. a.ev4
2-2. b.ev4
...
10-1 aa.ev4
10-2 bb.ev4
11-1 aaa.ev4
12-2 bbb.ev4
在文件夹的显示顺序
1-1. a.ev4
1-2. b.ev4
10-1 aa.ev4
10-2 bb.ev4
11-1 aaa.ev4
12-2 bbb.ev4
2-1. a.ev4
2-2. b.ev4
...
排序后显示方式
a
b
a
b
...
aa
bb
aaa
bbb
public class DirectoryUtil {
public static ArrayList<ListData> getDirAndFiles(String filePath) {
ArrayList<ListData> result = new ArrayList<ListData>();
File file = new File(filePath);
File[] tempFile = file.listFiles();
assert tempFile != null;
for (File value : tempFile) {
if (value.isFile()) {
if (value.getName().contains(".")) {
result.add(new ListData(value.getName().split(".ev4")[0],
Integer.parseInt(value.getName().split(".ev4")[0].split(" ")[0].split("-")[0]),
Integer.parseInt(value.getName().split(".ev4")[0].split(" ")[0].split("-")[1])));
} else {
result.add(new ListData(value.toString(), 0, 0));
}
}
if (value.isDirectory()) {
System.out.println("文件夹:" + value);
}
}
return result;
}
public static void main(String[] args) {
ArrayList<ListData> files = getDirAndFiles("");
// files.sort(Comparator.naturalOrder());
files.sort((o1, o2) -> {
if (o1.getFirst() > o2.getFirst()) {
return 1;
}
if (o1.getFirst() == o2.getFirst()) {
if (o1.getSecond() > o2.getSecond()) {
return 1;
}
}
return -1;
});
for (ListData element : files) {
System.out.println(element.getName());
}
}
}
public class ListData {
private String name;
private int first;
private int second;
public ListData(String name, int first, int second) {
this.name = name;
this.first = first;
this.second = second;
}
@Override
public String toString() {
return "ListData{" +
"name='" + name + '\'' +
", first=" + first +
", second=" + second +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getFirst() {
return first;
}
public void setFirst(int first) {
this.first = first;
}
public int getSecond() {
return second;
}
public void setSecond(int second) {
this.second = second;
}
}