Java 如何开始迭代集合而不是从头开始
我希望迭代跳过前几个元素<代码>元素是一个Java 如何开始迭代集合而不是从头开始,java,collections,Java,Collections,我希望迭代跳过前几个元素元素是一个列表。我想从列表中重复一遍,不是从一开始,而是从中间的某个地方开始,我怎么能做到这一点? for ( WebElement element : elements ) { //block of code } 如果elements是一个列表,那么可以使用listIterator,特别是elements.listIterator(index)。它将返回一个列表迭代器,从索引处的元素开始 例如: 如果elements不是一个列表,您仍然可以通过创建一个包含
列表
。我想从列表中重复一遍,不是从一开始,而是从中间的某个地方开始,我怎么能做到这一点?
for ( WebElement element : elements )
{
//block of code
}
如果
elements
是一个列表,那么可以使用listIterator,特别是elements.listIterator(index)
。它将返回一个列表迭代器,从索引处的元素开始
例如:
如果elements
不是一个列表,您仍然可以通过创建一个包含集合内容的新列表来使用该方法。您可以像本例中那样使用list.listIterator(int)
List<WebElement> list = ...
for(Iterator<WebElement> i = list.listIterator(1); i.hasNext();) {
WebElement next = i.next();
}
List=。。。
for(迭代器i=list.listIterator(1);i.hasNext();){
WebElement next=i.next();
}
或者干脆
for(int i = 1; i < list.size(); i++) {
WebElement e = list.get(i);
}
for(int i=1;i
请注意,使用LinkedList时#1更快,使用ArrayList时#2更快。
有一个特殊的标记接口java.util.RandomAccess,用于确定哪个版本对于给定列表更有效。对于许多需要对特定范围的列表应用某些操作的情况,您可以:
这也适用于删除某些范围:
myList.subList(4, 14).clear();
请注意,子列表
仅存在于列表
上,因此这不适用于集合
或其他非列表集合
对象。为什么不使用最简单、最直接的方法
int i = 0;
for (WebElement element : elements)
{
if (/*i++ satisfies some condition*/) {
//block of code
}
}
或者,更自然的方法是:在未增强的for循环中跟踪索引
另一种方法,如创建子列表,看起来更为奇特,但这将需要更多的时间和空间。如果您想引用arraylist,也可以说您自己创建arraylist。这将允许您通过引用(如数组)访问点,然后您可以使用泛型
while(node.hasNext()){…}结束。什么是元素
,列表
,或者仅仅是Iterable
,甚至WebElement[]
?如果不是从开始,从什么开始?元素就是列表。@Chiel92让我们说从列表中的第三个元素开始。这意味着您可以执行常规的for循环。“foreach”构造旨在通过集合封装迭代。如果列表不是随机访问(如链表),则第二种方法速度较慢。您的解决方案符合我的要求。谢谢
myList.subList(4, 14).clear();
int i = 0;
for (WebElement element : elements)
{
if (/*i++ satisfies some condition*/) {
//block of code
}
}