Java 8:如何在一个链接列表中更新数据,我需要拉动前一个节点的数据来更新当前节点的数据。

问题描述 投票:0回答:1

我目前卡在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()的调用,但我需要数据根据以前的数据来更新当前的记录。请帮助我。

java collections java-8 linked-list doubly-linked-list
1个回答
3
投票

代码向前移动,然后再回到原点,经过 ListIterator 每次执行while循环时。调用 taskListIterator.next() 后的if语句中。taskListIterator.previous() 以使其向前移动。

© www.soinside.com 2019 - 2024. All rights reserved.