List<String>里面内容如何排序

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