利用实现Comparable接口排序


  1. Comparable接口

    public classList {

        public static void main(String[] aegs) {

             ArrayListlist = new ArrayList();

             Namea = new Name("xinqi","xia");Name b = new Name("gang","xia");

             Namec = new Name("qiaoqiao","du");Name d = new Name("wei","liu");

             Namee = new Name("huan","liu");

             list.add(a);list.add(b);list.add(c);list.add(d);list.add(e);

             Collections.sort(list);

             System.out.println(list);

        }

    }

    class Name implements Comparable{

        StringfirstName;

        StringlastName;

        public String toString() {

             return(firstName+" "+lastName);

        }

        public Name(String a,String b) {

             firstName = a;

             lastName  = b;

        }

        public int compareTo(Object arg) {

             Nameobj = (Name) arg;

             int lastCmp = this.lastName.compareTo(obj.lastName);

             return (lastCmp!=0 ? lastCmp : firstName.compareTo(obj.firstName));

        }

    }

    题目要求:每个对象都有 姓和名字,排序是先按姓,再按名字,整体就是字母az的顺序排。

    解题思路:

          1,把compareTo的参数Object类型变成类的类型,那么实例也就有了对象的那些属性,    包括姓和名字。这个比较的是this Object obj

          2,先按姓氏排序,没有纯数字那种大小比较,比较字母可以用字符串的compareTo         ()方法

    3,如果 相同,那么再用字符串的 compareTo()的方法比较名字

    4,以上都是在类的重写方法compareTo()方法里面写的

    5,使用Collections.sortList)排序的时候,参数是list集合,要把对象放集合里

                对象就是实现Comparable那个类的对象,而且每个对象都有相同的属性,就是有

                可以比较的那些属性,也就是在compareTo()方法里的属性。




你可能感兴趣的:(利用实现Comparable接口排序)