繰り返しで最初のいくつかの要素をスキップしたい。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)
。の要素から始まるリスト反復子を返します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 の方が高速であることに注意してください。特定の List に対してどちらのバージョンがより効率的かを判断するための特別なマーカー インターフェース java.util.RandomAccess があります。
最も単純で最も簡単な方法を使用しないのはなぜですか?
int i = 0;
for (WebElement element : elements)
{
if (/*i++ satisfies some condition*/) {
//block of code
}
}
または、よりネイティブな方法:拡張されていないforループでインデックスを追跡します。
サブリストを作成するような他の方法はより魅力的に見えますが、それはより多くの時間とスペースを必要とします。
参照したい場合、またはいわば独自に作成したい場合は、配列リストを使用できます。これにより、(配列のように)参照によってポイントにアクセスできるようになり、最後まで汎用のwhile(node.hasNext()){...}を繰り返し処理できます。