java自定义ArrayList排序, 大神略过

一个list里面有两种对象,现在有个需求必须对不同的对象的日期来排序,以下是代码

/**
*@author 肖华 [email protected]
*/

List<Message> messages=messageSrv.getList(u.getUserId());

List<Object> messageList=new ArrayList<Object>();
for(Object o:messages){
messageList.add(o);
}
for(Object o:checks){
messageList.add(o);
}
Collections.sort(messageList,  new Comparator(){
public int compare(Object o1, Object o2) {
if(o1 instanceof Message && o2 instanceof Message){
Message m=(Message) o1;
Message m2=(Message) o2;
if(m.getMessageDate().after(m2.getMessageDate()))
return 1;
if(m.getMessageDate().equals(m2.getMessageDate()))
return 0;
if(m.getMessageDate().before(m2.getMessageDate()))
return -1;
}else if(o1 instanceof CheckRecord && o2 instanceof Message){
CheckRecord m=(CheckRecord) o1;
Message m2=(Message) o2;
if(m.getCdate().after(m2.getMessageDate()))
return 1;
if(m.getCdate().equals(m2.getMessageDate()))
return 0;
if(m.getCdate().before(m2.getMessageDate()))
return -1;
}else if(o1 instanceof CheckRecord && o2 instanceof CheckRecord){
CheckRecord m=(CheckRecord) o1;
CheckRecord m2=(CheckRecord) o2;
if(m.getCdate().after(m2.getCdate()))
return 1;
if(m.getCdate().equals(m2.getCdate()))
return 0;
if(m.getCdate().before(m2.getCdate()))
return -1;

}else if(o1 instanceof Message && o2 instanceof CheckRecord){
Message m=(Message) o1;
CheckRecord m2=(CheckRecord) o2;
if(m.getMessageDate().after(m2.getCdate()))
return 1;
if(m.getMessageDate().equals(m2.getCdate()))
return 0;
if(m.getMessageDate().before(m2.getCdate()))
return -1;
}
return 0;

}


写个日志不容易,转载请注明出处:http://blog.csdn.net/xh199110  谢谢

你可能感兴趣的:(java,ArrayList,comparator)