ArrayList中的數據排序問題

我們在做項目時,常常遇到數組排序的問題.比如我有一個工作流的任務實例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;
}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章