list迭代器遍歷刪除 java中foreach和迭代器在遍歷List集合,一些情況下為什么能使用集合自動(dòng)的刪除方法刪除元素?
java中foreach和迭代器在遍歷List集合,一些情況下為什么能使用集合自動(dòng)的刪除方法刪除元素?當(dāng)您是<70時(shí),倒數(shù)第二位是66。您沒有引發(fā)異常,因?yàn)橐郧暗牧斜泶笮∈?。刪除66后,列表大小
java中foreach和迭代器在遍歷List集合,一些情況下為什么能使用集合自動(dòng)的刪除方法刪除元素?
當(dāng)您是<70時(shí),倒數(shù)第二位是66。您沒有引發(fā)異常,因?yàn)橐郧暗牧斜泶笮∈?。刪除66后,列表大小為4。第一次遍歷列表大小為5的數(shù)組時(shí),指針66位于index=4中。遍歷列表大小為4的數(shù)組時(shí),指針66位于index=4中newlist.size文件()。
ArrayList中的此方法將判斷列表已被讀取,因此不會(huì)引發(fā)異常。
1]]2
3
公共布爾hasnext(){
返回光標(biāo)!=size
}
A< 90,第二位變了,列表的大小也變了
看ArrayList的源代碼,調(diào)用這個(gè)方法檢查列表的大小是否每次都變,但是這個(gè)方法發(fā)生在hasnext方法之后
1
2
3
4
final void Checkforcomodification(){
if(modcount!=expectedmodcount)
拋出新的并發(fā)modificationexception()]}
Python用*和迭代器生成list有何不同?
讓我們先談?wù)劦鳌?duì)于string、list、dict、tuple等容器對(duì)象,使用循環(huán)遍歷非常方便。在后臺(tái),for語句調(diào)用容器對(duì)象上的iter()函數(shù)。Iter()是Python的內(nèi)置函數(shù)。ITER()返回定義next()方法的迭代器對(duì)象。它逐個(gè)訪問容器中的元素。Next()也是Python的內(nèi)置函數(shù)。當(dāng)沒有后續(xù)元素時(shí),next()拋出stopiteration異常以通知for語句循環(huán)結(jié)束。生成器是創(chuàng)建迭代器的一個(gè)簡(jiǎn)單而強(qiáng)大的工具。它們像常規(guī)函數(shù)一樣編寫,只在需要返回?cái)?shù)據(jù)時(shí)使用yield語句。每次調(diào)用next()時(shí),生成器都會(huì)返回它離開的位置(它會(huì)記住語句的最后一次執(zhí)行和所有數(shù)據(jù)值)。
刪除list集合為什么要用迭代器?
刪除其中一個(gè)時(shí),對(duì)應(yīng)數(shù)組中的元素會(huì)清空刪除位置的下標(biāo),然后將后續(xù)數(shù)據(jù)逐個(gè)向前推,導(dǎo)致最后一個(gè)位置的下標(biāo)為空。當(dāng)您到達(dá)最后一個(gè)位置時(shí),如果沒有數(shù)據(jù),數(shù)組將被報(bào)告為越界。迭代器的原理是只有在有下一項(xiàng)時(shí)才取值,并且沒有下標(biāo),這樣可以保證數(shù)據(jù)的一致性
個(gè)人理解:我覺得Java中的迭代器就像把一個(gè)集合中的所有東西放到一個(gè)容器中,然后逐個(gè)讀出。例如:List=new ArrayList()列表.添加(“你好”)列表.添加(“world”)迭代器it=列表迭代器()而(它。下一個(gè)()){String s=(字符串)它。下一個(gè)() 系統(tǒng)輸出打?。╯) }首先,通過add()方法將值放入列表中,然后通過迭代器取出放入列表集合中的所有值。在打印中,迭代器用于此。我認(rèn)為Java迭代器主要用于讀取集合。
JAVA迭代器?
迭代器迭代器=列表迭代器()Object first=null Object last=null int count=0,而(迭代器.hasNext()){count Object temp=迭代器.next()if(count==1){first=temp}else{if(!迭代器.hasNext()){//最后一個(gè)元素last=temp}}}后跟first和last。但你沒有具體說明要處理什么,所以寫起來不容易