黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java基礎學習:Java8的新特性

Java基礎學習:Java8的新特性

更新時間:2020-03-31 09:01:14 來源:動力節點 瀏覽2139次


    現在很多業務方還一直停留在1.7版本,遲遲不升級,為了兼容性,不敢在代碼中使用Java8的一些新特性,比如Stream之類的,雖然不能用,但還是要學一下。


Java基礎學習:Java8的新特性



  Stream是什么


  Stream是Java8中添加的一個新特性,它與java.io包里的InputStream和OutputStream是完全不同的概念。它借助于Lambda表達式,可以讓你以一種聲明的方式處理數據,可以極大提高Java程序員的生產力,讓程序員寫出高效率、干凈、簡潔的代碼。


  StreamDemo


  直接上Demo,感受一下


Java基礎學習:Java8的新特性


  Stream 如何工作


  當使用一個流的時候,通常包括三個基本步驟:


  獲取一個數據源(source)


  數據轉換


  執行操作獲取想要的結果


  每次轉換原有 Stream 對象不改變,返回一個新的 Stream 對象(可以有多次轉換),這就允許對其操作可以像鏈條一樣排列,變成一個管道,如下圖所示。


Java基礎學習:Java8的新特性


  在Stream中,分為兩種操作


  中間操作


  結束操作


  中間操作返回Stream,終端操作返回void或者非Stream結果,在demo中, filter、 map、 sorted都算是中間操作,而 forEach是一個結束操作。


  Stream 如何生成


  創建Stream的方式很多,最常見的是從Collections,List 和 Set中生成

  

Java基礎學習:Java8的新特性


  在對象myList上調用方法 stream() 返回一個常規對象Stream。

  也可以從一堆已知對象中生成。

  

Java基礎學習:Java8的新特性


  當然了,還有其它方式:


  Collection.stream()


  Collection.parallelStream()


  BufferedReader.lines()


  Files.walk()


  BitSet.stream()


  Random.ints()


  JarFile.stream()


  ....


  常規操作


  forEach


  forEach方法接收一個 Lambda 表達式,用來迭代流中的每個數據

  

Java基礎學習:Java8的新特性


  map


  map 用于映射每個元素到對應的結果

  

Java基礎學習:Java8的新特性


  filter


  filter 用于通過設置的條件過濾出元素

  

Java基礎學習:Java8的新特性


  limit


  limit 用于用于獲取指定數量的流

  

Java基礎學習:Java8的新特性


  sorted


  sorted 用于對流進行排序

  

Java基礎學習:Java8的新特性


  Match


  有三個 match 方法,從語義上說:


  allMatch:Stream 中全部元素符合傳入的 predicate,返回 true


  anyMatch:Stream 中只要有一個元素符合傳入的 predicate,返回 true


  noneMatch:Stream 中沒有一個元素符合傳入的 predicate,返回 true


  它們都不是要遍歷全部元素才能返回結果。例如 allMatch 只要一個元素不滿足條件,就 skip 剩下的所有元素,返回 false。

  

Java基礎學習:Java8的新特性


  reduce


  reduce 方法根據指定的函數將元素序列累積到某個值。此方法有兩個參數:


  起始值


  累加器函數。


  如果有一個List,希望得到所有這些元素和一些初始值的總和。

  

Java基礎學習:Java8的新特性


  collect


  Collectors類中提供了功能豐富的工具方法


  toList


  toSet


  toCollection


  toMap


  ...


  而這些方法,都需要通過 collect 方法傳入。

  

Java基礎學習:Java8的新特性


  collect 可以把Stream數據流轉化為Collection對象,


  騷技巧


  for循環


  除了常規的對象Stream,還有一些有特殊類型的Stream,用于處理基本數據類型int、long和double,它是IntStream、LongStream和DoubleStream。


  比如可以使用IntStream.range()來代替常規的for循環。

  

Java基礎學習:Java8的新特性


  隨機數


  Random的ints方法可以返回一個隨機數據流,比如返回1到100的10個隨機數。

  

Java基礎學習:Java8的新特性


  大小寫轉化

  

Java基礎學習:Java8的新特性


  Stream 特點


  總之,Stream 的特性可以歸納為:


  無存儲


  Stream并不是一種數據結構,它只是某種數據源的一個視圖


  安全性


  對Stream的任何修改都不會修改背后的數據源,比如對stream執行過濾操作并不會刪除被過濾的元素,而是會產生一個不包含被過濾元素的新Stream。


  惰式執行


  Stream上的操作并不會立即執行,只有等到用戶真正需要結果的時候才會執行。


  一次性


  Stream只能被“消費”一次,一旦遍歷過就會失效,就像容器的迭代器那樣,想要再次遍歷必須重新生成。


  lambda


  所有 Stream 的操作必須以 lambda 表達式為參數


Java基礎學習:Java8的新特性


  以上就是動力節點java培訓機構的小編針對“Java基礎學習:Java8的新特性”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 艾草在线精品视频播放 | 一区二区三区免费在线视频 | 日韩视频高清 | 欧美国产高清 | 日韩欧美视频一区二区 | 一级毛片免费一级直接观看 | 国产在线拍揄自揄视频不卡99 | 黄色视屏在线免费看 | 国产精品三级一区二区 | 天堂男人2021av| 亚洲国产天堂久久综合9999 | 亚洲综合日韩精品欧美综合区 | 欧美黄成人免费网站大全 | 日本不卡一区二区三区视频 | 青春草在线观看精品免费视频 | 播放一级黄色片 | 久久免费视频一区 | 日韩免费高清视频网站 | 免费大片黄在线观看 | 一级片aaaa | 国产成+人+亚洲+欧美+日韩 | 天天躁日日躁成人字幕aⅴ 天天在线欧美精品免费看 天天影视涩香欲综合网 | 亚洲欧美日韩中文不卡 | 国产在线观看免费视频软件 | 动漫精品欧美一区二区三区 | 日本男女网站 | 国产乱人视频在线看 | 亚洲高清国产一区二区三区 | 亚洲精品自在线拍 | 日韩一级视频免费观看 | 国产黄在线播放免费观看 | 欧美日韩第一页 | 在线观看 a国v | 天堂网色 | 国产成人在线播放 | 狠狠色狠狠色综合人人 | 欧美午夜性 | 窝窝午夜看片免费视频 | 国产高清天干天天美女 | freexx性欧美另类hd | 日本三区四区免费高清不卡 |