在本教程中,我们将探索在 Java 中将ListIterator重置到列表开头的各种方法。
假设我们有一个字符串列表:
List
然后,我们可以通过MY_LIST.listIterator()获取MY_LIST上的ListIterator ,并通过调用ListIterator的next()方法迭代列表。
有时,我们可能希望通过要求ListIterator对象再次指向列表中第一个元素之前的位置来重置 ListIterator 对象,因为它是新创建的。
接下来,我们将研究解决此问题的不同方法。此外,我们将利用单元测试断言来验证每个解决方案是否给出预期结果。
当我们创建一个新的ListIterator对象时,它指向目标列表的开头。因此,重置ListIterator实例的最简单方法是将变量重新分配给新的ListIterator。
让我们创建一个测试并验证这个想法是否按预期工作:
ListIterator<String> lit = MY_LIST.listIterator(); |
如上面的测试所示,在创建ListIterator lit后,我们调用lit.next()方法四次。当我们想要重置lit时,我们创建了一个新的ListIterator实例并将其重新分配给 lit。
然后,我们通过两个断言验证lit是否重置成功:
- lit.hasPrevious()返回false
- lit.next()应该是MY_LIST中的第一个元素( “A” )
向后迭代到列表的开头
创建一个新的ListIterator可以快速导航到列表的开头。但是,我们将有一个新的ListIterator对象。
有时,我们想保留原始的ListIterator对象并将其指针移回目标列表的开头。如果是这种情况,我们可以利用ListIterator的双向迭代功能向后迭代到列表的开头。
接下来,让我们创建一个测试来看看如何实现这一目标:
ListIterator<String> lit = MY_LIST.listIterator(); |
正如我们所看到的,我们通过while循环应用向后迭代。
如果我们运行测试,它就会通过。所以,它完成了工作。
值得注意的是,由于此方法从当前位置向后迭代到列表的开头,因此如果列表中的元素数量很大,则速度可能会很慢。