import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class ListCompareTest { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("2003"); list.add("2005"); list.add("2001"); list.add("2007"); System.out.println(list); Collections.sort(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { // 返回相反的compare return o2.compareTo(o1); } }); System.out.println(list); } }
这是网上的方法,但是有bug:
List元素是string,里面包含数字,如何排序的问题 设ArrayList<String> list, 里面包含"1aa","2ggg","6aaa","4bbb",如果对里面的数字进行排序。 可以重写Collections.sort方法。 Collections.sort(list, new Comparator<String>() { public int compare(String o1, String o2) { return extractInt(o1) - extractInt(o2); } int extractInt(String s) { String num = s.replaceAll("\D", ""); // return 0 if no digits found return num.isEmpty() ? 0 : Integer.parseInt(num); } });