亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java中iterator的Next()遍歷完之后怎么回到起點

java中iterator的Next()遍歷完之后怎么回到起點

阿波羅的戰車 2019-03-02 16:03:02
List<String> coll = new ArrayList<String>(); //LinkedList(); //ArrayList();;coll.add("is");coll.add("Sunday.");// Output all elements by iteratorIterator it = coll.iterator();System.out.println(it.hasNext());while(it.hasNext()) {System.out.println(it.next() + " ");}如題 有沒有好的方法還有 Iterator it = coll.iterator();為什么要放在coll.add();之后 不然會出錯
查看完整描述

2 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

重新得到一個新的 Iterator 對象(還是調用 coll.iterator())。所謂遍歷嘛,你已經“遍”過,下次再“遍”當然要重新開始了。

如果你的集合中都沒東西,你當然就沒有“遍”的必要,當然是我們往集合中添加了東西我們才要遍歷一下看一下其中的東西嘛。不過有一點,在迭代的過程中不能直接修改集合。比如:
for(Iterator iter = list.iterator(); iter.hasNext(); ) {
list.add("afewfe"); // 這個操作是非法的,它導致 iter 內緩存的位置索引失效,結果不可預料。
}

Java 中的迭代器是指你想對集合中的每一個元素做個操作,這個時候就不能再在不通知迭代器的情況下直接改這個集合了,通常我們為了確保迭代器在迭代過程中的位置索引是有一致的,我們支持的修改操作很有限,比如:
for(Iterator iter = list.iterator(); iter.hasNext(); ) {
Object current = iter.next();
// 如果是我們想找的,刪除它。
if ( current == aaa) {
iter.remove(); // 刪除當前的。這個時候迭代器知道我們修改了集合,而且我們只能刪除當前位置的東西,這個迭代器內部的位置索引就沒有問題,如果我們刪除任意位置的元素,那么迭代器當前保持的位置索引就沒有意義,因此不能直接 add 或 remove 任意位置,只能通過迭代器來刪除當前位置的。
}
}

for(ListIterator iter = list.listIterator(); iter.hasNext(); ) {
// 這個 ListIterator 比 Iterator 多些方法可用,因為 List 與其它集合相對它是有序的。
}



查看完整回答
反對 回復 2019-03-09
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

關于iterator的Next()遍歷完之后怎么回到起點,你可以重新it=coll.iterator(),就可以回到起點。

查看完整回答
反對 回復 2019-03-09
  • 2 回答
  • 0 關注
  • 2051 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號