说我有一个Pojo
public MyTask {
TaskType taskType;
id taskId;
...
}
taskType
的值只能来自以下Enum
:
public static enum TaskType {
WRITE_DOC, UPDATE_DOC, SEND_DOC, OTHER
};
现在我有MyTask
的列表:
List<MyTask> tasks = GOT_TASKS_FROM_SOMEWHERE();
MyTask
的上述列表包含来自Enum混合在一起的随机任务类型的多个任务。列表中的某些任务也可能具有相同的TaskType
。
我需要创建一个函数,它将一个TaskType
作为参数,并从上面的任务列表中返回最新匹配任务:
public MyTask getLatestTaskOfType(TaskType type){
//I am not sure how could I get the latest MyTask with the TaskType
}
如何从列表(MyTask
)中获取与参数tasks
匹配的最新TaskType
?
答案 0 :(得分:0)
您可以反向迭代列表,并找到具有所需类型的第一个对象:
ListIterator<MyTask> reverseIterator = tasks.listIterator(tasks.size());
while (reverseIterator.hasPrevious()) {
MyTask task = reverseIterator.previous();
if (task.getTaskType() == type)
return task;
}
return null; // Not found
答案 1 :(得分:0)
让我看看我是否理解正确。您有一个MyTask对象列表,并且您想要检索列表中具有指定TaskType的最后一个元素。您可以进行列表的反向迭代,也可以在列表的开头添加元素并正常迭代。另一种解决方案是使用LinkedHashMap作为数据结构。使用这种结构,检索应该很快并且它将保持插入顺序。
答案 2 :(得分:0)
您可以在MyTask
中再添加一个字段来存储更新时间。说它'lastupdated'。
现在在下面的方法
public MyTask getLatestTask(TaskName name){
//iterate tasks list and prepare new list of tasks matching taskname = name
// sort new list with comparator which compares list w.r.t 'lastupdated' value in desc order
// return first element from sorted list, which is the last updated task matching your criteria
}
答案 3 :(得分:0)
public final
日期对象初始化为当前日期和时间。