I am currently stuck in java doubly linked list. I need to update the data of current node, based on the value of previous. It's going into a never ending loop if I try this :
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);
}
}
my hasNext() function is not coming out of while loop. It value is getting reset to previous, whenever I am trying to access previous data.
While loop end only if, I remove the call to previous(), but I need the data to update the current record based on previous. Please help.
The code is moving forward then back again through the ListIterator
every time the while loop is executed. Call taskListIterator.next()
in your if statement after you call taskListIterator.previous()
to move it back forward.