public
class
diyarraylist
<
t>
implements
iterable
<
t>
public
diyarraylist
(int capacity)
catch
(illegalacces***ception e)
} data =(t
)new
object
[capacity]
;this
.size =0;
}//集合是否滿
public boolean isfull()
//擴容
public
void
grow()
//範圍判斷
private boolean checkrange
(int index)
return
true;}
@override
public string tostring()
return buffer.
tostring()
;}//增加
public boolean add
(t e)
data[size++
]= e;
return
true;}
//獲取元素
public
tget
(int index)
//刪除元素
public
tremove
(int index)
//刪除
public boolean remove
(t e)}}
else}}
return
false;}
@override
public iterator<
t>
iterator()
//實現迭代器
class
itrimplements
iterator
<
t>
@override
public
tnext()
t num = data[i]
; beforeindex = i;
return num;
} @override
public
void
remove()
}public
static
void
main
(string[
] args)
system.out.
println()
; iterator.
remove()
; system.out.
println
(arraylist);}
}
執行結果:
注意:要自定義迭代器類,類要具有iterator方法,需要實現iterable介面
自定義迭代器類需要實現 iterator介面
ArrayList為什麼要自己實現迭代器
arraylist的父類abstractlist已經實現了iterator介面,為什麼arraylist還要自己實現iterator介面呢?arraylist實現iterator,是為了避免arraylist在迭代過程中陣列結構發生變化的而產生的問題,這個處理機制稱為fail fast機制,實際是乙...
迭代器和反向迭代器,常量迭代器和非常量迭代器
迭代器的型別共有4種 iiterator,const iterator,reverse iterator,const reverse iterator include include include include using namespace std int main include inclu...
迭代(iterable)和迭代器
任何可迭代物件都可以作用於for迴圈,包括我們自定義的資料型別,只要符合迭代條件,就可以使用for迴圈 d 對dict迭代 for k,v in d.items 如果要同時迭代key和value,可以用for k,v in d.items print k,v 預設情況下,dict迭代的是key 如果...