ArrayList中的数据排序问题

来源:互联网 发布:知天下事是什么动物 编辑:程序博客网 时间:2024/06/06 02:31
我们在做项目时,常常遇到数组排序的问题.比如我有一个工作流的任务实例TaskInstance类,在获得某人任务实例列表时,把实例对象存储在ArrayList数组中,现在要把ArrayList数组中的TaskInstance对象按照任务创建时间进行排序。

TaskInstance.java 类内容如下
public class TaskInstance{
private static final long serialVersionUID = 1L;
long id = 0; //任务ID
int version = 0; //版本号
protected String name = null; //任务名
protected String actorId = null;//任务执行者
protected Date create = null;//任务创建时间
protected Date end = null;//任务完成时间
........略去

public TaskInstance() {
}
public void setCreate(Date create) {
this.create = create;
}
public void setId(long id) {
this.id = id;
}
public long getId() {
return id;
}
public Date getCreate() {
return create;
}
........略去
}

JBPMAction.java控制类
public class JBPMAction{

/**
* 返回任务列表
* @throws Exception
* @return String
*/
public String taskList() throws Exception {
.......

List taskList = new ArrayList();
//得到任务列表方法
taskList = taskMgmtSession.findTaskInstanceWrappersByActorIds(userMbIDs);
//指定 Comparator的实现类
Comparator comp = new TaskInstanceComparator();
//将taskList列表对象按TaskInstanceComparator中定义的规则排序
Collections.sort(taskList,comp);

return SUCCESS;

//实现Comparator接口的类,可是内部类,也可以是外部类,用于定义排序规则,对列表中的对象可以定义任何排序规则.

class TaskInstanceComparator
implements Comparator {
public int compare(Object o1, Object o2) {
TaskInstance tin1=(TaskInstance)o1;
TaskInstance tin2=(TaskInstance)o2;

//以下是以TaskInstance 中的create属性排序。

if (tin1.getCreate().getTime() > tin2.getCreate().getTime())
return 1;
else
return 0;
}

}


原创粉丝点击