我希望迭代跳过前几个元素。elements
是一个List<WebElement>
。我想不是从头开始遍历列表,而是从中间的某个地方开始,我怎么能这样做?
for ( WebElement element : elements )
{
//block of code
}
我希望迭代跳过前几个元素。elements
是一个List<WebElement>
。我想不是从头开始遍历列表,而是从中间的某个地方开始,我怎么能这样做?
for ( WebElement element : elements )
{
//block of code
}
如果elements
是一个列表,您可以使用 listIterator,特别是方法elements.listIterator(index)
。它将返回从元素 at 开始的列表迭代器index
。
例如:
for(ListIterator iter = elements.listIterator(2);iter.hasNext;) {
WebElement element = (WebElement)iter.next;
...
}
如果elements
不是列表,您仍然可以通过使用您的集合内容创建一个新列表来使用该方法。
您可以像本例一样使用 List.listIterator(int)
List<WebElement> list = ...
for(Iterator<WebElement> i = list.listIterator(1); i.hasNext();) {
WebElement next = i.next();
}
或者干脆
for(int i = 1; i < list.size(); i++) {
WebElement e = list.get(i);
}
请注意,#1 使用 LinkedList 更快,而#2 使用 ArrayList 更快。有一个特殊的标记接口 java.util.RandomAccess 来确定哪个版本对给定列表更有效。
为什么不直接使用最简单最直接的方式呢?
int i = 0;
for (WebElement element : elements)
{
if (/*i++ satisfies some condition*/) {
//block of code
}
}
或者,更原生的方式:在未增强的 for 循环中跟踪索引。
像创建子列表这样的其他方式看起来更漂亮,但这需要更多的时间和空间。
如果您想引用或制作您自己的,可以这么说,您可以使用数组列表。这将允许您通过引用访问点(如数组),然后您可以使用通用的 while(node.hasNext()) {...} 迭代到最后。