开发中有时需要给List排序,大家都知道List本身是排序的,但它内部排序是按照存入顺序排序的,故而有时候这并不是我们所需要的。
为此,我们需要按照我们的意愿把List里面的object排序。
例子:
实现List里面Object类的配需
Object里面有一个时间字段 HH:mm
需要让Object实现Comparable接口,并实现其方法;
package com.ringtop.global.entity.livemanage;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class PageLiveInfo implements Comparable {
private String liveTime;
public PageLiveInfo(String liveTime) {
super();
this.liveTime = liveTime;
}
@Override
public String toString() {
return "PageLiveInfo [liveTime=" + liveTime + "]";
}
public String getLiveTime() {
return liveTime;
}
public void setLiveTime(String liveTime) {
this.liveTime = liveTime;
}
@Override
public int compareTo(Object pf) {
PageLiveInfo plf = (PageLiveInfo) pf;
String t1 = plf.getLiveTime();
String t2 = this.getLiveTime();
t1 = "2012-01-01 " + t1;
t2 = "2012-01-01 " + t2;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
int l1 = 0;
int l2 = 0;
try {
l1 = (int) sdf.parse(t1).getTime();
l2 = (int) sdf.parse(t2).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return l2 > l1 ? 1 : -1; //按照时间的由小到大排列
}
}
让类实现Comparable类并实现其方法后 便可以使用Collections的排序方法按照我们指定的序列排序了。
List<Object> list = new ArrayList<Object>();
list.add(object1);
list.add(object2);
Collections.sort(list);
//最后打印出来的object就是按照给定的顺序排好序的序列