為什麼Iterator要先next再remove

2021-07-26 05:50:45 字數 457 閱讀 3449

在使用iterator的時候為什麼要先next再remove不然就會拋錯呢

@org.junit.test

public void testarraylist()

}看一下jdk的實現

private class itr implements iterator

@suppresswarnings("unchecked")

public e next()

public void remove() catch (indexoutofbound***ception ex)

}final void checkforcomodification()

}可以看得出來如果直接呼叫remove lastret =-1 所以直接拋錯 throw new illegalstateexception();.這麼做的好處其實可以控制遍歷時候陣列越界提公升效能,其中匠心得要細細的品味

為什麼使用iterator模式

意圖 提供一種方法順序訪問乙個聚合物件中各個元素,而又不需要暴露物件的內部表示。我想gof 的意圖這次說的很明白了,就是我想遍歷乙個聚合物件。但又隱藏內部實現。該怎麼辦呢?本模式主要 就是把遍歷演算法獨立出來,使它和聚合物件去耦合 為何使用?在物件導向設計中,乙個難點就是辨認物件的職責。理想的狀態下...

為什麼要選擇ISP 為什麼要選擇AHD

在影象傳輸中,我們為什麼選擇nextchip?為什麼要選擇isp?為什麼要選擇ahd?為什麼選擇北京冠宇銘通?這個問題我倒著回答各位 一 北京冠宇銘通科技是nextchip目前為止唯一一家正式官方授權 車載產品廠家之一 二 ahd和其他幾種傳輸方式相比,擁有自己的專利,其他幾家有專利的沒有幾個,如果...

為什麼要分詞

這裡不討論這個問題,我要說的為什麼要分詞?分詞是什麼!有人問 分詞有什麼作用啊?某人答 搜尋引擎要用到中文分詞,所以非常重要 這完全是廢話,說了等於沒說。搜尋引擎又為什麼要分詞呢?其實一般意思上指的分詞是比較狹隘的意思,指中文的詞是怎樣劃分的。因為中文沒有空格,所以要理解一篇文 章,你首先當然要切分...