Java 8:如何更新链表中的数据,需要拉取上一个节点的数据来更新当前节点的数据
Java 8 : How to update data in a linked list, where I need to pull the data of previous node to update data of current node
我目前卡在 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 loop end only if,我删除了对previous()的调用,但我需要数据来根据previous更新当前记录。请帮忙
每次执行 while 循环时,代码都会通过 ListIterator
向前移动然后再次向后移动。在调用 taskListIterator.previous()
后在 if 语句中调用 taskListIterator.next()
以将其后移。
我目前卡在 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 loop end only if,我删除了对previous()的调用,但我需要数据来根据previous更新当前记录。请帮忙
每次执行 while 循环时,代码都会通过 ListIterator
向前移动然后再次向后移动。在调用 taskListIterator.previous()
后在 if 语句中调用 taskListIterator.next()
以将其后移。