1. 实现比较类
public class Comparator implements java.util.Comparator<TaskInfo>{ @Override public int compare(TaskInfo o1, TaskInfo o2) { //查验位置 if(o1.getPriority()==o2.getPriority() && o1.getPriority()==Constants.PRIORITY_HIGH){ return o1.getCheckPosition().compareTo(o2.getCheckPosition()); } //请求时间早晚 if(o1.getPriority()==o2.getPriority() && o1.getPriority()!=Constants.PRIORITY_HIGH){ return (int) (o1.getTimeStamp().getTime()-o2.getTimeStamp().getTime()); } //优先级 return o1.getPriority()-o2.getPriority(); } }
public static final Queue<TaskInfo> REQUESTDISPATCHQUEUE = new PriorityBlockingQueue<>(Constants.ARRAY_SIZE, new Comparator<TaskInfo>() );
2. 直接覆盖
public static final Queue<TaskInfo> REQUESTDISPATCHQUEUE = new PriorityBlockingQueue<>(Constants.ARRAY_SIZE, new Comparator<TaskInfo>() { @Override public int compare(TaskInfo o1, TaskInfo o2) { return o2.getPriority()-o1.getPriority(); } });
3. 在entity中实现
public class TaskInfo implements Comparable<TaskInfo>{ @Override public int compareTo(TaskInfo o) { return this.checkStage - o.checkStage; } }
List<TaskInfo> listTaskInfo;
Collections.sort(listTaskInfo);