AbstractList繼承自AbstractCollection,并實(shí)現(xiàn)了List接口,實(shí)現(xiàn)了List接口中大部分函數(shù),從而方便其他類實(shí)現(xiàn)List接口

iterator方法
需要注意的
- remove方法刪除上次調(diào)用next或者previous返回的集合元素,在調(diào)用remove方法之前,如果沒有調(diào)用一次next或者previous方法,或者在調(diào)用了next、previous方法之后已經(jīng)調(diào)用過了remove方法或add方法,換句話說距離本次調(diào)用remove方法最近的方法不是next、previous則拋出IllegalStateException異常。這是因?yàn)?strong>在每一次調(diào)用next或者previous時(shí)會(huì)將lastRet設(shè)置為剛要返回的元素索引,而每一次執(zhí)行remove方法都將lastRet設(shè)置為 -1 標(biāo)識(shí)不能在刪除元素。
- 在迭代期間集合發(fā)生改變,則拋出ConcurrentModificationException異常。
ListIterator方法
注意:
- set方法:替換上一次調(diào)用next或previous集合的返回值,在調(diào)用set方法之前,如果沒有調(diào)用一次next或者previous方法,或者在調(diào)用了next、previous方法之后已經(jīng)調(diào)用過了remove方法或add方法,換句話說距離本次調(diào)用set方法最近的方法不是next、previous則拋出IllegalStateException異常。
- add方法會(huì)將lastRet設(shè)置為-1,所以在add方法之后緊跟remove方法或者set方法都將拋出IllegalStateException異常。
這里看一下equals函數(shù)
可以看的出來
- 兩個(gè)list對(duì)象引用相同,即都指向同一個(gè)堆對(duì)象,所以實(shí)際上是同一個(gè)物理對(duì)象,返回true
- 兩個(gè)list對(duì)象 :(1)參數(shù)類型是List類型的實(shí)例或者是List子類的實(shí)例(接口和類具有相同繼承語(yǔ)義);(2)list的size相等;(3)對(duì)應(yīng)位置上的每個(gè)元素相等,通過元素的equals判斷;滿足上述3個(gè)條件則返回true
hashCode函數(shù)
根據(jù)列表元素hash值來計(jì)算列表hash值,能夠保證通過equals判斷相等的list的hashCode也相等。





