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);
}
});
转:https://www.cnblogs.com/ChewApple/articles/5238301.html
来源:https://www.cnblogs.com/xyyou/p/12517919.html