forEach方法遍歷集合

舊API、新的forEach API進行遍歷打印集合中的元素對比
下面比較使用舊API、新的forEach API進行遍歷打印集合中的元素:

舊API需要獲取集合的Iterator迭代器實例來進行遍歷纪挎;
新的API結(jié)合lambda表達式使用一行代碼即可:myList.forEach(s -> {System.out.println("Iterator Value::"+s);});

package com.spring.lambda;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**

  • <pre>

  • Java8 的 forEach方法演示實例

  •  通過遍歷打印集合元素比較 新舊方式的使用區(qū)別
    
  • </pre>
    */
    public class ForEachDemo {
    public static void main(String[] args) {
    List<Integer> myList = new ArrayList<Integer>();
    for(int i=0; i<3; i++) myList.add(i);

             System.out.println("<<<<<<<<Java8之前迭代方式start...>>>>>>>");
             Iterator<Integer> it = myList.iterator();
             while(it.hasNext()){
                 Integer i = it.next();
                 System.out.println("Iterator Value::"+i);
             }
    
             System.out.println("<<<<<<<<Java8之前迭代方式end.>>>>>>>");
             System.out.println("<<<<<<<<Java8使用forEach新迭代方式start...>>>>>>>");
             myList.forEach(s -> {System.out.println("Iterator Value::"+s);});
             System.out.println("<<<<<<<<Java8使用forEach新迭代方式end.>>>>>>>");
    

    }
    }

兩種方式得到的是一樣的結(jié)果:
<<<<<<<<Java8之前迭代方式start...>>>>>>>
Iterator Value::0
Iterator Value::1
Iterator Value::2
<<<<<<<<Java8之前迭代方式end.>>>>>>>
<<<<<<<<Java8使用forEach新迭代方式start...>>>>>>>
Iterator Value::0
Iterator Value::1
Iterator Value::2
<<<<<<<<Java8使用forEach新迭代方式end.>>>>>>>

JAVA8中forEach方法的詳解
forEach方法是JAVA8中在集合父接口java.lang.Iterable中新增的一個default實現(xiàn)方法:
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}

forEach方法接受一個在JAVA8中新增的java.util.function.Consumer的消費行為 或者稱之為動作 (Consumer action )類型;
然后將集合中的每個元素作為消費行為的accept方法的參數(shù)執(zhí)行;
直到每個元素都處理完畢或者拋出異常即終止行為帝雇;
除非指定了消費行為action 的實現(xiàn),否則默認情況下是按迭代里面的元素順序依次處理蛉拙。

自定義消費行為動作Consumer action

首先尸闸,需要實現(xiàn)java.util.function.Consumer接口;
再次孕锄,實現(xiàn)其accept方法

需要了解的幾個新的API 接口以及方法

java.lang.Iterable#forEach
java.util.function.Consumer#accept

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吮廉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子畸肆,更是在濱河造成了極大的恐慌宦芦,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恼除,死亡現(xiàn)場離奇詭異踪旷,居然都是意外死亡,警方通過查閱死者的電腦和手機豁辉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門令野,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人徽级,你說我怎么就攤上這事气破。” “怎么了餐抢?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵现使,是天一觀的道長低匙。 經(jīng)常有香客問我,道長碳锈,這世上最難降的妖魔是什么顽冶? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮售碳,結(jié)果婚禮上强重,老公的妹妹穿的比我還像新娘。我一直安慰自己贸人,他們只是感情好间景,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著艺智,像睡著了一般倘要。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上十拣,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天封拧,我揣著相機與錄音,去河邊找鬼父晶。 笑死哮缺,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的甲喝。 我是一名探鬼主播尝苇,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼埠胖!你這毒婦竟也來了糠溜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤直撤,失蹤者是張志新(化名)和其女友劉穎非竿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谋竖,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡红柱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蓖乘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锤悄。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嘉抒,靈堂內(nèi)的尸體忽然破棺而出零聚,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布隶症,位于F島的核電站政模,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蚂会。R本人自食惡果不足惜淋样,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颂龙。 院中可真熱鬧习蓬,春花似錦纽什、人聲如沸措嵌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽企巢。三九已至,卻和暖如春让蕾,著一層夾襖步出監(jiān)牢的瞬間浪规,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工探孝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笋婿,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓顿颅,卻偏偏與公主長得像缸濒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粱腻,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容