成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

java 什么是迭代器iterator?

什么是迭代器iterator?迭代器(Iterator)迭代器是一種設(shè)計(jì)模式,它是一個(gè)對(duì)象,它可以遍歷并選擇序列中的對(duì)象,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu)。迭代器通常被稱為“輕量級(jí)”對(duì)象,因?yàn)閯?chuàng)建

什么是迭代器iterator?

迭代器(Iterator)

迭代器是一種設(shè)計(jì)模式,它是一個(gè)對(duì)象,它可以遍歷并選擇序列中的對(duì)象,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu)。

迭代器通常被稱為“輕量級(jí)”對(duì)象,因?yàn)閯?chuàng)建它的代價(jià)小。Java中的Iterator功能比較簡(jiǎn)單,并且只能單向移動(dòng):

(1) 使用方法iterator()要求容器返回一個(gè)Iterator。第一次調(diào)用Iterator的next()方法時(shí),它返回序列的第一個(gè)元素。

注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。

(2) 使用next()獲得序列中的下一個(gè)元素。

(3) 使用hasNext()檢查序列中是否還有元素。

(4) 使用remove()將迭代器新返回的元素刪除。

Iterator是Java迭代器最簡(jiǎn)單的實(shí)現(xiàn),為L(zhǎng)ist設(shè)計(jì)的ListIterator具有更多的功能,它可以從兩個(gè)方向遍歷List,也可以從List中插入和刪除元素。

java中foreach和迭代器在遍歷List集合,一些情況下為什么能使用集合自動(dòng)的刪除方法刪除元素?

你a<70的時(shí)候是倒數(shù)第二位,也就是66,沒有拋出異常是因?yàn)橹發(fā)ist大小為5,你刪除66后,list大小為4,你第一次遍歷list大小為5的數(shù)組的時(shí)候,66的cursor在index = 4,當(dāng)你刪除后,遍歷list大小為4的數(shù)組時(shí), cursor = 4 = newlist.size()。

ArrayList里的這個(gè)方法就會(huì)判斷l(xiāng)ist已經(jīng)讀取完畢了,所以不會(huì)拋出異常。

1

2

3

public boolean hasNext() {

return cursor != size

}

a < 90的時(shí)候在第二位就發(fā)生了變化,list的大小也發(fā)生了變化

看了下ArrayList的源碼,每次循環(huán)的時(shí)候都會(huì)call這個(gè)方法檢查list的大小是否發(fā)生了變化,但是這個(gè)方法是發(fā)生在hasNext方法之后的

1

2

3

4

final void checkForComodification() {

if (modCount != expectedModCount)

throw new ConcurrentModificationException()

}