Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何开始迭代集合而不是从头开始_Java_Collections - Fatal编程技术网

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
      }
}