由于某种原因,这里的迭代器无法正常工作。我调试了代码,it1有元素。但是,当它返回之前的行时,是空的。任何提示?
private Tasks loadChangeStatusOnTasks(final Tasks updatedTasks, final List<Boolean> changeStatusList) {
final Iterator<Task> it1 = updatedTasks.getTasks().iterator();
final Iterator<Boolean> it2 = changeStatusList.iterator();
while(it1.hasNext() && it2.hasNext()) {
it1.next().setAssigneeChanged(it2.next().booleanValue());
}
final Tasks tasks = new Tasks(new ArrayList<TaskDTO>());
tasks.setTasks(IteratorUtils.toList(it1));
return tasks;
}
答案 0 :(得分:0)
当你到达tasks.setTasks(IteratorUtils.toList(it1))
时,it1
已经用尽:所有元素都已消耗掉了!
如果您想创建一个新列表并进行分配,请执行以下操作:
return new Tasks(new ArrayList<>(updatedTasks.getTasks()));
答案 1 :(得分:0)
迭代器已在前一个while循环中迭代,并且没有更多的.hasNext()元素。这就是IteratorUtils.toList()将产生一个空列表的原因。
解决方案可能是首先创建列表并循环遍历列表以从其他迭代器设置assigneeChanged属性。