【发布时间】:2017-10-02 08:22:29
【问题描述】:
我正在使用自定义比较器对列表进行排序。
Collections.sort(list, new DispositionShiftSortComparator(shiftSortComparatorIndex));
在比较函数中,如果两个 objetc 中的任何一个具有 cretain 值,那么我不希望比较器对该调用中的列表进行排序。
功能如下:
boolean taskStatusObj1 = false, taskStatusObj2 = false;
long time1 = 0, time2 = 0;
for (int i = 0; i < o1.getValue().getTaskCount(); i++) {
if (o1.getValue().getTask(i).getObject() instanceof TaskObject) {
TaskObject obj1 = (TaskObject)o1.getValue().getTask(i).getObject();
if (obj1 != dndTask) {
taskStatusObj1 = ((TaskObject)o1.getValue().getTask(i).getObject()).getSafeDataItem(DataKey.DK_TASK_STATE).stringValue() != null ? true : false;
}
}
}
for (int i = 0; i < o2.getValue().getTaskCount(); i++) {
if (o2.getValue().getTask(i).getObject() instanceof TaskObject) {
TaskObject obj2 = (TaskObject)o2.getValue().getTask(i).getObject();
if (obj2 != dndTask) {
taskStatusObj2 = ((TaskObject)o2.getValue().getTask(i).getObject()).getSafeDataItem(DataKey.DK_TASK_STATE).stringValue() != null ? true : false;
}
}
}
if (taskStatusObj1) {
new Date(o1.getValue().getTask(o1.getValue().getTaskCount() - 1).getEndTime());
time1 = o1.getValue().getTask(o1.getValue().getTaskCount() - 1).getEndTime();
} else {
time1 = 0;
}
if (taskStatusObj2) {
new Date(o2.getValue().getTask(o2.getValue().getTaskCount() - 1).getEndTime());
time2 = o2.getValue().getTask(o2.getValue().getTaskCount() - 1).getEndTime();
} else {
time2 = 0;
}
if (time1 != 0 && time2 != 0) {
return -(int) (time1 - time2);
} else if (time1 != 0 && time2 == 0) {
return (int) time1;
} else if (time1 == 0 && time2 != 0) {
return (int) -time2;
}
return 0;
}
在我正在检查对象是否不是 dnd 任务类型的函数中,不要执行排序。任何人都可以帮助我在我的方法中出错的地方。
【问题讨论】:
-
比较器不排序,它只是确定两个值中哪个更小。
-
你的
time1和time2总是积极的吗? -
确定的值是多少?
-
完成。非常感谢
标签: java sorting comparator