我目前卡在java双链接列表中。我需要根据前一个节点的值更新当前节点的数据。如果我尝试这样做,就会进入一个永无止境的循环。
ListIterator<SegmentDTO> taskListIterator = segmentDTOLinkedList.listIterator(dataPosition);
while (taskListIterator.hasNext())
{
SegmentDTO existingSegment = taskListIterator.next();
existingSegment.setSequenceId(existingSegment.getSequenceId() + 1);
if (taskListIterator.hasPrevious())
{
SegmentDTO previousSegment = taskListIterator.previous();
LocalDateTime projectedStartDttm = existingSegment.getProjectedStartDttm();
LocalDateTime projectedEndDttm = existingSegment.getProjectedEndDttm();
long originalDifference = Duration.between(projectedStartDttm, projectedEndDttm).toHours();
LocalDateTime projectedEndDateTimeAfterNewStop = previousSegment.getProjectedEndDttm()
.plusHours(originalDifference);
existingSegment.setProjectedStartDttm(previousSegment.getProjectedEndDttm());
existingSegment.setProjectedEndDttm(projectedEndDateTimeAfterNewStop);
}
}
我的hasNext()函数没有从while循环中出来。每当我试图访问以前的数据时,它的值就会被重置为以前的。
只有在while循环结束时,我才会删除对forever()的调用,但我需要数据根据以前的数据来更新当前的记录。请帮助我。
代码向前移动,然后再回到原点,经过 ListIterator
每次执行while循环时。调用 taskListIterator.next()
后的if语句中。taskListIterator.previous()
以使其向前移动。