Ma con le espressioni regolari viene ancora più bello!
codice:
import java.util.*;
import java.util.regex.*;
public class Prova
{
public static void main (String[] args)
{
try
{
String[] arr = { "10.methods", "topolino", "22.methods", "pippo", "3.methods",
"1.methods", "11.methods", "minnie", "45aaa", "8ccc" };
Arrays.sort (arr, new InitialNumberStringComparator ());
System.out.println (Arrays.toString (arr));
}
catch (Exception e)
{
System.out.println (e);
}
}
}
class InitialNumberStringComparator implements Comparator<String>
{
private Pattern pattern = Pattern.compile ("^(\\d+)");
private Matcher matcher1 = pattern.matcher ("");
private Matcher matcher2 = pattern.matcher ("");
public int compare (String s1, String s2)
{
if (matcher1.reset (s1).find () && matcher2.reset (s2).find ())
{
int i1 = Integer.parseInt (matcher1.group (1));
int i2 = Integer.parseInt (matcher2.group (1));
return i1 > i2 ? +1 : i1 < i2 ? -1 : 0;
}
else
return s1.compareTo (s2);
}
}