按List中Person类的age属性进行排序。
Person类:
package com.flg;
/**
* Created with IntelliJ IDEA.
* User: fuliguo
* Date: 12-7-29
* Time: 下午13:09
* To change this template use File | Settings | File Templates.
*/
public class Person implements Comparable{
private String name;
private int age;
private boolean isAsc;//是否升序排列.true:升序, false:降序
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;
}
public boolean isAsc() {
return isAsc;
}
public void setAsc(boolean asc) {
isAsc = asc;
}
/**
* 实现Comparable接口中的compareTo方法
* 这是对象自身与别一个对象之间的比较
* @param o
* @return
*/
@Override
public int compareTo(Object o) {
if(isAsc()){
return this.age-((Person)o).getAge();
}else {
return ((Person)o).getAge()-this.age;
}
}
}
MyPersonListSortTest2类:
package com.flg;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
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: 下午13:10
* To change this template use File | Settings | File Templates.
*/
public class MyPersonListSortTest2 {
/**
* 获得要测试的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<Person> list,boolean isAsc){
for(Person p:list){
p.setAsc(isAsc);//设置升降序排列
}
Collections.sort(list);
}
public static void main(String [] args) {
MyPersonListSortTest2 m = new MyPersonListSortTest2();
List list = m.getList();
System.out.println("==========排序前=========");
m.printList(list);
m.listSort(list,true); //排序isAsc:true 升序,false:降序
System.out.println("==========排序后=========");
m.printList(list);
}
}