List<String> list = new ArrayList<String>(); list.add("2"); list.add("12"); list.add("30"); list.add("10"); list.add("101"); Collections.sort(list);
というコードでは[10, 101, 12, 2, 30]の順にソートされてしまいます。
Collections.sort(list, new java.util.Comparator<String>() { @Override public int compare(String s1, String s2) { int i1 = Integer.parseInt(s1); int i2 = Integer.parseInt(s2); return i2 - i1; } });
とすると、[101, 30, 12, 10, 2]と降順にソートされます。昇順にソートしたい場合はi1-i2とすればよいでしょう。
ちなみに、今月リリースされるJava8では
Collections.sort(list, (s1, s2) -> Integer.parseInt(s2) - Integer.parseInt(s1));
というようにラムダ式を用いた書式が可能なようです。
関連:https://hacknote.jp/archives/517/
データベースから取得する際にソートして取得する方法