import java.util.Comparator;
import java.util.*;
public class SsvlistInfoCompare implements Comparator<String[]> {
    /**
     *
     */
    public int compare(String[] a, String[] b) {
        //如果a 大于b 返回 整数 1 、相等返回 0 、小于返回 -1
        //按升序排列 如果要设置成降序写成b.compareTo(a);
        int flag = a[0].compareTo(b[0]);
        return flag;
    }    public static void main(String[] strs) {
        List<String[]> list = new ArrayList<String[]>();
        for(int i = 0 ; i < 20 ; i++){
            String[] ary = new String[1];
            ary[0] = String.valueOf(i);
            list.add(ary);        }        SsvlistInfoCompare s = new SsvlistInfoCompare();
        //实现顺序或者倒序排列
        Collections.sort(list, s);        for (int i = 0; i < list.size(); i++) {
            String[] ary = list.get(i);
            System.out.println(ary[0]);        }
    }
}
急 谢谢

解决方案 »

  1.   

    public int compare(String[] a, String[] b) { }
    这里错了,你不能自己改参数的。要用API里面的public int compare(Object o1, Object o2) {}
      

  2.   


    import java.util.Comparator;
    import java.util.*;
    public class SsvlistInfoCompare implements Comparator<String[]> {
     
     
        /**
         *
         */
        public int compare(String[] a, String[] b) {
            //如果a 大于b 返回 整数 1 、相等返回 0 、小于返回 -1
            //按升序排列 如果要设置成降序写成b.compareTo(a);
            int flag = Integer.parseInt(a[0]) - Integer.parseInt(b[0]);
            return flag;
        }
     
        public static void main(String[] strs) {
            List<String[]> list = new ArrayList<String[]>();
            for(int i = 0 ; i < 20 ; i++){
                String[] ary = new String[1];
                ary[0] = String.valueOf(i);
                list.add(ary);
     
            }
     
            SsvlistInfoCompare s = new SsvlistInfoCompare();
            //实现顺序或者倒序排列
            Collections.sort(list, s);
     
            for (int i = 0; i < list.size(); i++) {
                String[] ary = list.get(i);
                System.out.println(ary[0]);
     
            }
        }
    }
      

  3.   

    你的程序的问题是,compareTo的参数是string,比较string,是比较第一个字符,如果相同则比较第二个。所以打印出来会是:
    0
    10
    11
    12
    13
    .
    .
    .
    2
    3
    4
    .
    .
    .