1
3
3pic
6
11
16
DVD
VM
就是放入到 ArrayList 中的元素是 String, 排序出上边的效果
谢谢了

解决方案 »

  1.   

    补充ls
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;public class Test { public static void main(String[] args)  {
    List<String> list = new ArrayList<String>();
    list.add("1");
    list.add("3");
    list.add("3pic");
    list.add("6");
    list.add("11");
    list.add("16");
    list.add("DVD");
    list.add("VM"); for(String s:list) {
    System.out.println(s);
    }

    System.out.println("--------------");

    Collections.sort(list,new Comparator<String>() { public int compare(String o1, String o2) {

    String s1 = o1.replaceAll("\\D", "");
    String s2 = o2.replaceAll("\\D", "");

    boolean error = false;
    int ia = 0;
    int ib = 0;
    try {
    ia = Integer.parseInt(s1);
    ib = Integer.parseInt(s2);
    } catch (NumberFormatException e) {
    error = true;
    }

    if(!error) {
    return ia - ib;
    }


    return o1.compareTo(o2);
    }

    });

    for(String s:list) {
    System.out.println(s);
    }

    }
    }