import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
public class ComparatorTest {
public static void main (String[] arg) {
List<TaskInfo> testList=new LinkedList<TaskInfo>();
testList.add(new TaskInfo(10001, false));
testList.add(new TaskInfo(12000, true));
testList.add(new TaskInfo(10003, true));
testList.add(new TaskInfo(13001, false));
testList.add(new TaskInfo(14001, true));
testList.add(new TaskInfo(14005, true));
testList.add(new TaskInfo(14003, false));
Collections.sort(testList, new TaskComparator());
for (int i = 0; i < testList.size(); i++) {
System.out.println(testList.get(i).getId()+" "+testList.get(i).isComplete);
}
}
/**
* 任务比较器 :按照任务id升序,完成度降序
* @author jaze
//返回-1:taskInfo1在前,taskInfo2在后
//返回0 :顺序不变
//返回1:taskInfo2在前,taskInfo1在后
*/
static private class TaskComparator implements Comparator<TaskInfo>{
@Override
public int compare(TaskInfo taskInfo1, TaskInfo taskInfo2) {
if (taskInfo1.isComplete()) {
if (taskInfo2.isComplete()) {
return taskInfo1.getId()>taskInfo2.getId()? 1 : (taskInfo1.getId()==taskInfo2.getId()? 0 : -1);
}else {
return -1;
}
}else {
if (taskInfo2.isComplete()) {
return 1;
} else {
return taskInfo1.getId()>taskInfo2.getId()? 1 : (taskInfo1.getId()==taskInfo2.getId()? 0 : -1);
}
}
}
}
static private class TaskInfo{
int id;
boolean isComplete;
public TaskInfo(int id, boolean isComplete) {
this.id = id;
this.isComplete = isComplete;
}
public int getId() {
return id;
}
public boolean isComplete(){
return isComplete;
}
}
}