public Person(String name,int age){ this.name=name; this.age=age; } public int compareTo(Person o) { // TODO Auto-generated method stub return this.age-o.age; } ////////////对年龄排序 Person pp1=new Person("dd",12); Person pp2=new Person("ww",19); Person pp3=new Person("ss",11); Person pp4=new Person("ff",23);
public class PersonComparator implements Comparator<Person>{ public int compare(Person o1, Person o2) { // TODO Auto-generated method stub return o1.getAge()-o2.getAge(); }} 、、、、 Comparator<Array.Person> ppp=new PersonComparator(); Collections.sort(hs,ppp); for(Person p:hs){ System.out.println(p.getAge());
数组:可以用Arrays.sort();
List:用Collections.sort();
Set:可以用TreeSet类.排序自动的。
Map:可以用TreeMap类,以key的值自动排序。
List:用Collections.sort(); 对上面的这两个排序方法,如果类没有实现Comparable接口,或者想以不同于Comparable的比较方法排序时,可以自己指定一个Comparator来做为参数传给sort方法,也能排序。
this.name=name;
this.age=age;
}
public int compareTo(Person o) {
// TODO Auto-generated method stub
return this.age-o.age;
}
////////////对年龄排序
Person pp1=new Person("dd",12);
Person pp2=new Person("ww",19);
Person pp3=new Person("ss",11);
Person pp4=new Person("ff",23);
//HashSet<Person>hs=new HashSet<Person>();
//TreeSet<Person>hs=new TreeSet<Person>();
List<Person>hs=new ArrayList<Person>();
hs.add(pp1);
hs.add(pp2);
hs.add(pp3);
hs.add(pp4);
Object obj[]=hs.toArray();
Arrays.sort(obj);
for(int i=0;i<obj.length;i++){
System.out.println(((Person)obj[i]).getName()+"::"+((Person)obj[i]).getAge());
}
hs.add(pp1);
hs.add(pp2);
hs.add(pp3);
hs.add(pp4);
Collections.sort(hs);
for(Person pp:hs){
System.out.println(pp.getAge());
}
// TODO Auto-generated method stub
return o1.getAge()-o2.getAge();
}}
、、、、
Comparator<Array.Person> ppp=new PersonComparator();
Collections.sort(hs,ppp);
for(Person p:hs){
System.out.println(p.getAge());
}
所以你要实现comparable接口 然后重写compareTo()方法。
下面给你个例子(按两个字段排序的) 你也可以照这种方法把你的字段套进来。
public int compareTo(Preson op)
{
if(this.getPreifx().compareTo(op.getPreifx())>0)
{
return 1;
}
if(this.getPreifx().compareTo(op.getPreifx())<0)
{
return -1;
}
if(this.getId().compareTo(op.getId())>0)
{
return 1;
}
if(this.getId().compareTo(op.getId())<0)
{
return -1;
}
return 0;
} 这个方法写好后你肯定是For循环装对象咯 如果你把对象放到List中就直接调用Collection.sort(对象);