ファイルのリストがあると仮定すると、独自の並べ替え順序を定義できます。
// get a collection of the filenames in the directory
List<String> filenames = Arrays.asList(new File("/path/to/directory").list());
// sort this in custom order
Collections.sort(filenames, new Comparator<String>(){
@Override
public int compare(String left, String right){
String[] leftParts = left.split("[\\-\\.]");
String[] rightParts = right.split("[\\-\\.]");
if(leftParts.length < 3 || rightParts.length < 3){
// filename doesn't seem to match what we expect
// default to standard ordering
return left.compareTo(right);
}
int leftVal = -1
int rightVal = -1;
try {
// convert appropriate segment to integers
leftVal = Integer.valueOf(leftParts[1]);
rightVal = Integer.valueOf(rightParts[1]);
} catch(NumberFormatException e) {
return left.compareTo(right);
}
return rightVal - leftVal;
}
});
これにより、(自然な文字列の順序ではなく)番号順にファイルを反復処理できます。