欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別

 更新時間:2022年03月16日 09:45:13   作者:qq_42582773  
這篇文章主要介紹了java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

首先,它們的功能都是遍歷數(shù)組每個元素并執(zhí)行入?yún)⒌腶ccept()方法,但是它們的實現(xiàn)方式卻不一樣,在一些特定的情況下,執(zhí)行會出現(xiàn)不同的結(jié)果。

在大多數(shù)情況下,兩者都會產(chǎn)生相同的結(jié)果,但是,我們會看到一些微妙的差異。

概述

首先,創(chuàng)建一個迭代列表:

List<String> list = Arrays.asList("A","B","C","D");

最直接的方法是使用增強的for循環(huán):

for(String s : list"){
    //something
}

如果我們想使用函數(shù)式Java,我們也可以使用forEach()。我們可以直接在集合上這樣做:

Consumer<String> consumer = s -> {System.out::println};
list.forEach(consumer);

或者,我們可以在集合的流上調(diào)用forEach():

list.stream().forEach(consumer);

兩個版本都將迭代列表并打印所有元素:

ABCD ABCD

在這個簡單的例子中,我們使用的forEach()沒有區(qū)別。

區(qū)別

list.forEach()使用增強for循環(huán)

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

list.stream().forEach(): 它首先將集合轉(zhuǎn)換為流,然后對集合的流進行迭代

當一邊遍歷一邊刪除的時候,forEach能夠快速失敗,而stream().forEach()只有等到數(shù)組遍歷完之后才會拋異常

public class DeleteDifference {
? ?public static void main(String[] args) {
? ? ? ?List<String> list = Arrays.asList("A", "B", "C", "D");

? ? ? ?try {
? ? ? ? ? ?list.forEach(item -> {
? ? ? ? ? ? ? ?System.out.println(item);
? ? ? ? ? ? ? ?list.remove(0);
? ? ? ? ? ?});
? ? ? ?} catch (Exception e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ?}

? ? ? ?list.stream().forEach(item -> {
? ? ? ? ? ?System.out.println(item);
? ? ? ? ? ?list.remove(0);?
? ? ? ?});
? ?}
}

到此這篇關(guān)于java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別的文章就介紹到這了,更多相關(guān)list.forEach()和list.stream().forEach()區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis 使用權(quán)威指南

    MyBatis 使用權(quán)威指南

    MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集,本文給大家介紹MyBatis 使用指南,一起看看吧
    2017-03-03
  • SpringBoot使用Jackson詳解

    SpringBoot使用Jackson詳解

    Spring?Boot中使用Jackson處理JavaBean序列化為JSON格式,常用框架包括Jackson、Fastjson和Gson,Jackson是Spring?Boot默認的JSON處理庫,常用注解如@JsonProperty、@JsonIgnore、@JsonFormat等,用于自定義序列化和反序列化行為
    2025-02-02
  • SpringBoot注解@Import原理之關(guān)于ConfigurationClassPostProcessor源碼解析

    SpringBoot注解@Import原理之關(guān)于ConfigurationClassPostProcessor源碼解析

    這篇文章主要介紹了SpringBoot注解@Import原理之關(guān)于ConfigurationClassPostProcessor源碼解析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Springboot實現(xiàn)導(dǎo)入導(dǎo)出Excel的方法

    Springboot實現(xiàn)導(dǎo)入導(dǎo)出Excel的方法

    今天帶各位小伙伴學(xué)習Springboot實現(xiàn)導(dǎo)入導(dǎo)出Excel的方法,文中有非常詳細的介紹,對正在學(xué)習java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Java8中stream流的collectingAndThen方法應(yīng)用實例詳解

    Java8中stream流的collectingAndThen方法應(yīng)用實例詳解

    Java8中的Stream流提供了collectingAndThen方法,用于對歸納結(jié)果進行二次處理,文章通過User類的數(shù)據(jù)填充,演示了如何使用該方法進行集合去重、查找最高工資員工、計算平均工資等操作,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • 通過Java測試幾種壓縮算法的性能(附測試代碼下載)

    通過Java測試幾種壓縮算法的性能(附測試代碼下載)

    這篇文章主要介紹了通過Java測試幾種壓縮算法的實際性能的一個實驗,包括Java自帶的deflate與GZIP壓縮方式,還是有一定借鑒意義的,需要的朋友可以參考下
    2015-12-12
  • SpringCloud-feign使用詳解

    SpringCloud-feign使用詳解

    Feign是Spring?Cloud中的輕量級RESTful?HTTP服務(wù)客戶端,它通過定義接口和注解簡化了服務(wù)調(diào)用,Feign支持Ribbon進行負載均衡,并且可以通過OpenFeign與Spring?MVC注解結(jié)合使用,文章詳細介紹了Feign的使用方法、自定義配置以及與其他組件的集成
    2025-01-01
  • Spring Boot全局異常處理保姆級教程從入門到實戰(zhàn)(看完秒懂)

    Spring Boot全局異常處理保姆級教程從入門到實戰(zhàn)(看完秒懂)

    本文講解SpringBoot全局異常處理,通過@RestControllerAdvice集中處理異常,統(tǒng)一響應(yīng)格式,提升代碼簡潔性與安全性,涵蓋業(yè)務(wù)異常、參數(shù)校驗及系統(tǒng)異常處理,避免敏感信息泄露,并提供日志記錄與狀態(tài)碼自定義等進階技巧,感興趣的朋友跟隨小編一起看看吧
    2025-06-06
  • SpringBoot文件分片上傳教程

    SpringBoot文件分片上傳教程

    這篇文章主要介紹了SpringBoot文件分片上傳教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • SpringBoot整合Redis的實現(xiàn)示例

    SpringBoot整合Redis的實現(xiàn)示例

    本文主要介紹了SpringBoot整合Redis的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-01-01

最新評論