我想迭代跳過前幾個元素。 elements
是List<WebElement>
。我想從頭開始遍歷列表,但是從中間的某個地方開始,我怎麼能這樣做呢?如何開始迭代而不是從一開始
for (WebElement element : elements)
{
//block of code
}
我想迭代跳過前幾個元素。 elements
是List<WebElement>
。我想從頭開始遍歷列表,但是從中間的某個地方開始,我怎麼能這樣做呢?如何開始迭代而不是從一開始
for (WebElement element : elements)
{
//block of code
}
對於您希望將一些操作適用到特定範圍很多情況下List
,你可以use subList()
:
for (WebElement element : elements.subList(3, 7)) {
// do stuff
}
這也工作正常,消除一些範圍:
myList.subList(4, 14).clear();
請注意,subList
只存在於List
,所以這不會在Set
或其他非列表Collection
對象。
您的解決方案符合我的要求。謝謝。 –
如果elements
是一個列表,你可以使用的ListIterator,具體的方法elements.listIterator(index)
。它將返回一個列表迭代器,開始於index
處的元素。
E.g:
for(ListIterator iter = elements.listIterator(2);iter.hasNext;) {
WebElement element = (WebElement)iter.next;
...
}
如果elements
不是一個列表,你仍然可以通過創建您的收藏內容的新列表,用這種方法。
您可以在這個例子中
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.listIterator(INT)作爲。 有一個特殊的標記接口java.util.RandomAccess來確定給定列表的哪個版本更高效。
如果列表不是隨機訪問(如鏈接列表),則第二種方法很慢 –
爲什麼不使用最簡單最直接的方式?
int i = 0;
for (WebElement element : elements)
{
if (/*i++ satisfies some condition*/) {
//block of code
}
}
或者更原始的方式:在一個平穩的for-loop中跟蹤索引。
其他方式創建子列表看起來更漂亮,但這需要更多的時間和空間。
如果你想引用或者自己創建,你可以使用arraylist。這可以讓你通過引用訪問點(就像數組一樣),然後你可以通過一個通用的 (node.hasNext()){...}來遍歷到最後。
什麼是'元素','列表',或者僅僅是'Iterable '甚至是'WebElement []'? –
如果不是從一開始,從其他什麼? –
元素是列表。 –