實現ArrayList和迭代器

2021-09-12 09:28:37 字數 1706 閱讀 1756

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 如果...