用Java写,最近碰到一排序的问题。
我知道要把List排序需要继承Comparator 或者 Comparable ,但是我现在遇到一个问题。
描述一下:现在我有一个类,叫做Person, 在Person 中有name, id, city,等信息。
需求一:把Person放到ArrayList里,然后按照 name 排序,这个我实现了。需求二:把Person 放到ArrayList里,然后按照id, name ,city 排序。
例如有三个人
          name    id     city
Person1   a       1      c1
Person2   b       2      c1
Person3   a       2      c2按照需求,应该先按照id排序,再按照name 排序,最后按照city排序
排序结果应为:
          name    id     city
Person1   a       1      c1
Person3   a       2      c2
Person2   b       2      c1

解决方案 »

  1.   

    楼主已经明白怎么实现了
    可以让Person类实现Comparable接口,实现compare接口class Person implements Comparable<Person>{
    //....person类的定义
        public int compare(Person p){
            //这里实现排序,按照id,name,city的顺序比较,然后返回1,0,-1
            if(this.id<p.id)
                return -1;
            else if(this.id>p.id)
                return 1;
            else{
                int a=this.name.compare(p.name);
                if(a!=0)
                    return a;
                else{
                    return this.city.compare(p.city);
                }
            }
        }
    }
      

  2.   

    上面的比较方法记错了,Comparable的方法应该是compareTo。。把compare都改成compareTo就可以了
    不知道city的具体类型,如果String就可以直接调用String类的compareTo方法
      

  3.   

    扔数据库里去排,直接order by x,y,z
    简单的很,效率绝对你比整个什么算法的要强