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

遍歷一個(gè)集合

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

public class ContactList extends ArrayList<String>{}

里面存儲(chǔ)著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ì)顯式地去控制這個(gè)循環(huán)。
無需關(guān)心遍歷元素的順序,我們只需要定義對(duì)其中每一個(gè)元素進(jìn)行什么樣的操作。注意在這種設(shè)定下可能無法直接獲取到當(dāng)前元素的下標(biāo)。
Java5中引入Collection.forEach(...),對(duì)集合中每一個(gè)元素應(yīng)用其行為參數(shù),這個(gè)方法是從其父接口Iterable中繼承。
現(xiàn)在我們可以去重寫forEach方法。

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

網(wǎng)友評(píng)論