按List中Person类的age属性进行排序。
Person类:
package com.flg;
/**
* Created with IntelliJ IDEA.
* User: fuliguo
* Date: 12-7-29
* Time: 下午12:35
* To change this template use File | Settings | File Templates.
*/
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
MyPersonListSortTest1:
package com.flg;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: fuliguo
* Date: 12-7-29
* Time: 下午12:34
* To change this template use File | Settings | File Templates.
*/
public class MyPersonListSortTest1 implements Comparator {
private boolean isAsc; //是否升序排列
public boolean isAsc() {
return isAsc;
}
//带升降顺序设置的构造参数
public MyPersonListSortTest1(boolean asc) {
isAsc = asc;
}
//无参构造函数
public MyPersonListSortTest1(){}
/**
* 获得要测试的list
* @return list
*/
public List getList(){
List list = new ArrayList<Person>() ;
Person p1 = new Person();
p1.setName("张三");
p1.setAge(10);
Person p2 = new Person();
p2.setName("李四");
p2.setAge(20);
Person p3 = new Person();
p3.setName("王五");
p3.setAge(30);
//打乱存放顺序
list.add(p2);
list.add(p1);
list.add(p3);
return list;
}
/**
* 控制台输出遍历list对像顺序
* @param list
*/
public void printList(List list){
Person p;
for(int i=0;i<list.size();i++){
p = (Person)list.get(i);
System.out.println(p.getName()+"---"+p.getAge());
}
}
/**
* 对list进行排序
* @param list
*/
public void listSort(List list,boolean isAsc){
Collections.sort(list, (Comparator) new MyPersonListSortTest1(isAsc));
}
/**
* 当前类实现了Comparator接口的compare方法
* 站在第三方角度去比较其它对象
* 是一个Comparator的角色
* @param p1
* @param p2
* @return
*/
@Override
public int compare(Object p1, Object p2) {
if(isAsc()){
return ((Person)p1).getAge()-((Person)p2).getAge();
}else {
return ((Person)p2).getAge()-((Person)p1).getAge();
}
}
public static void main(String [] args){
MyPersonListSortTest1 m = new MyPersonListSortTest1();
List list = m.getList();
System.out.println("==========排序前=========");
m.printList(list);
m.listSort(list,false); //排序isAsc:true 升序,false:降序
System.out.println("==========排序后=========");
m.printList(list);
}
}