-2
A
回答
0
應該使用Comparable
接口或Comparator
List<String> al = Arrays.asList("book.chap.subs1-0.3.4-1.txt",
"book.chap.subs1-0.3.4-6.txt",
"book.chap.subs1-0.5.4-1.txt",
"book.chap.subs1-7.3.4-1.txt",
"book.chap.subs1-0.3.6-1.txt",
"book.chap.subs1-0.6.4-1.txt",
"book.chap.subs2-0.3.8-1.txt");
Collections.sort(al, new Comparator<String>() {
/**
* Retrieve version numbers for a fileName
* return int[]
*/
private int[] getNumbers(String fileName) {
Pattern p = Pattern.compile("book\\.chap\\.subs([0-9]+)-([0-9]+)\\.([0-9]+)\\.([0-9]+)-([0-9]+)\\.txt");
int[] numbers = new int[5];
Matcher m = p.matcher(fileName);
if (m.find()) {
for (int i = 1; i <= 5; i++) {
String n = m.group(i);
numbers[i - 1] = Integer.parseInt(m.group(i));
}
}
return numbers;
};
@Override
public int compare(String s1, String s2) {
int[] n1 = getNumbers(s1);
int[] n2 = getNumbers(s2);
for (int i = 0; i < 5; i++) {
if (n1[i] > n2[i]) {
return 1;
} else if (n1[i] < n2[i]) {
return -1;
}
}
return 0;
}
});
for (int i = 0, len = al.size(); i < len ; i++){
System.out.println(al.get(i));
}
相關問題
- 1. C#名單及排序按文件名
- 2. 按周排名按排名排序
- 3. 按基本名排序文件
- 4. 按編號排序文件名
- 5. 按文件名在Python排序列表
- 6. 按文件名排序圖像
- 7. Delphi XE2按文件名排序Tstringlist
- 8. Java按字段排序CSV文件
- 9. 如何使用c#按文件名按日期排序文件?
- 10. 按文件名長度排序文件名
- 11. 如何排序,按降序排列的文件名與manageQuery
- 12. 按名稱排序文件返回未排序的數組
- 13. Java - 對數組排序按文件大小排序
- 14. XSLT按名稱排序節點?
- 15. 需要按排序順序排序在java中的名稱
- 16. 按表名排序?
- 17. 目錄中的文件按文件名升序排列
- 18. 按文件名的內容對文件進行排序
- 19. 按日期和文件名將文件排序到目錄
- 20. readdir按文件名排序,其中文件名是月份的名稱
- 21. 按日期排序文件
- 22. 按字排序文件
- 23. 按列排序csv文件
- 24. 按列排序文件Linux
- 25. 的PHP文件名排序
- 26. KSH排序文件名
- 27. 按名稱排序升序
- 28. Java根據文件名進行重命名和排序
- 29. 按文件大小排序排列樹
- 30. 按排名和按字母順序對IRC用戶排序 - Java Comparator
所有數字的變化?應該如何1-0.333.4-1?排序? – aioobe 2014-09-21 09:28:05