用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
我知道要把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
可以让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);
}
}
}
}
不知道city的具体类型,如果String就可以直接调用String类的compareTo方法
简单的很,效率绝对你比整个什么算法的要强