放假前從學(xué)校圖書館中借來一本書,Oracle官方的《精通Lambda表達(dá)式:Java多核編程》。
假期已過大半才想起來還沒翻上幾頁,在此先推薦給大家。
此書內(nèi)容簡潔干練,如果你對Java語法有基礎(chǔ)的認(rèn)識看起來就會不費(fèi)勁,唯一的缺點(diǎn)就是代碼部分的內(nèi)容以及排版有些錯誤,不過瑕不掩瑜,無傷大雅。
這個系列就是我對書中每一小節(jié)的一個提煉、總結(jié)以及實(shí)踐,每一個知識點(diǎn)我都會附上自己寫的代碼,這些代碼用來驗證所學(xué)的知識。
才疏學(xué)淺,如果有理解錯誤之處請指正,歡迎交流討論。

遍歷一個集合

最傳統(tǒng)的方法大概是用Iterator,當(dāng)然我比較Low,習(xí)慣用i<arr.size()這類的循環(huán)。(現(xiàn)在我用for/in,本質(zhì)上還是Iterator...)
這一類方法叫做外部迭代,意為顯式地進(jìn)行迭代操作,即集合中的元素訪問是由一個處于集合外部的東西來控制的,在這里控制著循環(huán)的東西就是迭代器。
書中舉的例子是pointList,我在這里把它換成一個電話簿。

public class ContactList extends ArrayList<String>{}

里面存儲著String類型的聯(lián)系人。

for (Iterator<String> contactListIterator = contactList.iterator(); contactListIterator.hasNext(); ) {
    System.out.println(contactListIterator.next());
}

現(xiàn)在我們將這種遍歷方式換成內(nèi)部迭代。
顧名思義,這種方式的遍歷將在集合內(nèi)部進(jìn)行,我們不會顯式地去控制這個循環(huán)。
無需關(guān)心遍歷元素的順序,我們只需要定義對其中每一個元素進(jìn)行什么樣的操作。注意在這種設(shè)定下可能無法直接獲取到當(dāng)前元素的下標(biāo)。
Java5中引入Collection.forEach(...),對集合中每一個元素應(yīng)用其行為參數(shù),這個方法是從其父接口Iterable中繼承。
現(xiàn)在我們可以去重寫forEach方法。

@Overridepublic void forEach() {    for(String s : this) {
        System.out.println(s&
        
		

網(wǎng)友評論