最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java8中的forEach使用及說明

 更新時(shí)間:2023年07月14日 09:25:08   作者:一傾而盡  
這篇文章主要介紹了Java8中的forEach使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java8中的forEach使用

forEach

Java中的forEach是一個(gè)用于迭代集合或流,且可以對(duì)迭代的每個(gè)元素進(jìn)行特定操作的實(shí)用方法。

1. forEach method

下面的代碼片段展示了forEach方法在Iterable接口中的默認(rèn)實(shí)現(xiàn),它使這個(gè)方法對(duì)除了Map之外的所有集合都可用。

該方法對(duì)迭代器的每個(gè)元素執(zhí)行給定的操作,直到處理完所有元素或操作引發(fā)異常為止。

該action表示接受單個(gè)參數(shù)而不返回結(jié)果的一個(gè)操作。它是Consumer接口的一個(gè)實(shí)例。

Iterable.java

default void forEach(Consumer<? super T> action) { ?
?Objects.requireNonNull(action); ? ? ? ? ? ? ? ? ? ? ? ?
?for (T t : this) { ? ? ? ?
? ? ?action.accept(t); ? ?
?}?
}

也可以使用以下這種簡(jiǎn)單語法創(chuàng)建自定義操作.這里把Object類型替換為collection或stream中的元素類型.

Consumer<Object> action = new Consumer<Object>()
{
? ? @Override
? ? public void accept(Object t)
? ? {
? ? ? ? //perform action
? ? }
};

2. Java 8 stream forEach example

用于迭代流的所有元素并執(zhí)行特定操作的Java程序,這里的例子,我們打印所有的偶數(shù)

ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Consumer<Integer> action = System.out::println;
list.stream().filter(n -> n % 2 == 0).forEach(action);

輸出為:

2
4
1
2

3. Java forEach examle using List

用于迭代arrayList中的所有元素并執(zhí)行指定操作的java程序:

ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Consumer<Integer> action = System.out::println;
list.forEach(action);

輸出:

1
2
3
4
5

4. Java forEach example using Map

用于遍歷HashMap中的所有Entry實(shí)體,并執(zhí)行相關(guān)操作。

我們可以迭代map中的key和value并可以對(duì)所有元素進(jìn)行任何操作.

?? ?HashMap<String, Integer> map = new HashMap<>();
?? ?map.put("A", 1);
?? ?map.put("B", 2);
?? ?map.put("C", 3);
?? ?// 1.Map entries
?? ?Consumer<Map.Entry<String, Integer>> action = System.out::println;
?? ?map.entrySet().forEach(action);
?? ?// 2.Map keys
?? ?Consumer<String> actionKeys = System.out::println;
?? ?map.keySet().forEach(actionKeys);
?? ?// 3. Map values
?? ?Consumer<Integer> actionValues = System.out::println;?? ?
? ? map.values().forEach(actionValues);

輸出結(jié)果:

A=1
B=2
C=3
A
B
C

5. Create custom action(自定義操作)

我們也可以自定義操作方法為集合中的每個(gè)元素執(zhí)行自定義邏輯。

?? ?HashMap<String, Integer> map = new HashMap<>();
?? ?map.put("A", 1);
?? ?map.put("B", 2);
?? ?map.put("C", 3);
?? ?// 1.Map entries
?? ?Consumer<Map.Entry<String, Integer>> action = entry -> {
?? ??? ?System.out.println("Key is " + entry.getKey());
?? ??? ?System.out.println("Value is " + entry.getValue());
?? ??? ?System.out.println();
?? ?};
?? ?map.entrySet().forEach(action);

輸出結(jié)果:

Key is A
Value is 1

Key is B
Value is 2

Key is C
Value is 3

Java8中foreach()不能break,如果需要continue時(shí),怎么辦

結(jié)論

在Java8的foreach()中不能break,如果需要continue時(shí),可以使用return。

lambda表達(dá)式中使用return時(shí),這個(gè)方法是不會(huì)返回的,而只是執(zhí)行下一次遍歷。

測(cè)試代碼

  List<String> list = Arrays.asList("12", "14345", "16", "abch", "sdfhrthj", "mvkd");
        list.stream().forEach(e ->{
            if(e.length() >= 3){
                return;
            }
            System.out.println(e);
        });

在這里插入圖片描述

可以看出return起到的作用和continue是相同的。

原因

Stack Overflow中的答案,主要是說foreach()不是一個(gè)循環(huán),不是設(shè)計(jì)為可以用break以及continue來中止的操作。

最后

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SQL返回Map集合或者對(duì)象的操作

    SQL返回Map集合或者對(duì)象的操作

    這篇文章主要介紹了SQL返回Map集合或者對(duì)象的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot各種注解詳解

    SpringBoot各種注解詳解

    SpringBoot的一個(gè)核心功能是IOC,就是將Bean初始化加載到容器中,Bean是如何加載到容器的,可以使用SpringBoot注解方式或者Spring XML配置方式。SpringBoot注解方式減少了配置文件內(nèi)容,更加便于管理,并且使用注解可以大大提高了開發(fā)效率
    2022-12-12
  • maven 配置多個(gè)倉庫的方法

    maven 配置多個(gè)倉庫的方法

    這篇文章主要介紹了maven 配置多個(gè)倉庫的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • SpringBoot響應(yīng)處理實(shí)現(xiàn)流程詳解

    SpringBoot響應(yīng)處理實(shí)現(xiàn)流程詳解

    這篇文章主要介紹了SpringBoot響應(yīng)處理實(shí)現(xiàn)流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • Java interrupt()方法使用實(shí)例介紹

    Java interrupt()方法使用實(shí)例介紹

    一個(gè)線程在未正常結(jié)束之前, 被強(qiáng)制終止是很危險(xiǎn)的事情. 因?yàn)樗赡軒硗耆A(yù)料不到的嚴(yán)重后果比如會(huì)帶著自己所持有的鎖而永遠(yuǎn)的休眠,遲遲不歸還鎖等。 所以你看到Thread.suspend, Thread.stop等方法都被Deprecated了
    2023-02-02
  • Spring詳細(xì)講解FactoryBean接口的使用

    Spring詳細(xì)講解FactoryBean接口的使用

    這篇文章主要為大家介紹了Spring容器FactoryBean工廠實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 一文詳解Java方法重載與遞歸應(yīng)用

    一文詳解Java方法重載與遞歸應(yīng)用

    方法重載 允許在同一個(gè)類中定義多個(gè)具有相同名稱的方法,但 參數(shù)列表 必須不同,遞歸 是一種讓函數(shù)調(diào)用自身的技術(shù),它提供了一種將復(fù)雜問題分解為簡(jiǎn)單問題的方法,這樣更容易解決,本文詳細(xì)介紹了Java方法重載與遞歸應(yīng)用,需要的朋友可以參考下
    2024-02-02
  • 微服務(wù)Spring Boot 整合 Redis 實(shí)現(xiàn)UV 數(shù)據(jù)統(tǒng)計(jì)的詳細(xì)過程

    微服務(wù)Spring Boot 整合 Redis 實(shí)現(xiàn)UV 數(shù)據(jù)統(tǒng)計(jì)的詳

    這篇文章主要介紹了微服務(wù)Spring Boot 整合 Redis 實(shí)現(xiàn) UV 數(shù)據(jù)統(tǒng)計(jì),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • Java中線程死亡的幾種情況實(shí)例分析

    Java中線程死亡的幾種情況實(shí)例分析

    線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。下面這篇文章主要給大家介紹了Java線程死亡的幾種情況,需要的朋友可以參考下。
    2017-01-01
  • java代碼規(guī)范之不合理命名與重復(fù)代碼示例詳解

    java代碼規(guī)范之不合理命名與重復(fù)代碼示例詳解

    這篇文章主要為大家介紹了java代碼規(guī)范之不合理命名與重復(fù)代碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09

最新評(píng)論

合水县| 诸暨市| 宁化县| 正镶白旗| 宝鸡市| 宁明县| 平和县| 城固县| 额敏县| 河东区| 彭州市| 沈丘县| 马尔康县| 岳西县| 厦门市| 大余县| 宁乡县| 秭归县| 寿宁县| 蓬莱市| 专栏| 山东省| 定日县| 宜宾市| 肥城市| 濉溪县| 朝阳区| 囊谦县| 汉寿县| 陆河县| 苏州市| 同仁县| 钟祥市| 苍溪县| 铜山县| 云梦县| 凤庆县| 湖口县| 喀喇| 耿马| 岑溪市|