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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 如何學(xué)習(xí)java api:Stream API特性

如何學(xué)習(xí)java api:Stream API特性

更新時(shí)間:2020-01-16 15:09:23 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2703次


  隨著Java8的越來越普及,Java8 中Stream API相關(guān)的面試越來越多,比如經(jīng)常有面試官會(huì)問,是否有使用過Java8的經(jīng)驗(yàn)?簡(jiǎn)單介紹一下流API等。下面小編簡(jiǎn)單的整理了Java8 Stream API的一些特性,對(duì)Stream API相關(guān)面試題做一個(gè)入口級(jí)別的回答。掌握這些內(nèi)容,便于引導(dǎo)面試官繼續(xù)向下深入發(fā)問。


如何學(xué)習(xí)java api:Stream API特性


  Stream 的定義:“根據(jù)支持?jǐn)?shù)據(jù)處理操作的源生成的元素序列”。


  ●元素序列——就像集合一樣,流也提供了一個(gè)接口,可以訪問特定元素類型的一組有序值。流的目的在于表達(dá)計(jì)算,比如filter、sorted和map。集合講的是數(shù)據(jù)(存儲(chǔ)),流講的是計(jì)算(處理)。


  ●源——流會(huì)使用一個(gè)提供數(shù)據(jù)的源,如集合、數(shù)組等。


  ●數(shù)據(jù)處理操作——流的數(shù)據(jù)處理功能支持類似于數(shù)據(jù)庫的操作,以及函數(shù)式編程語言中的常用操作,如filter、map、reduce、find、match、sort等。流操作可以順序執(zhí)行,也可并行執(zhí)行。


  stream 操作的特點(diǎn)


  ●流水線——很多流操作本身會(huì)返回一個(gè)流,這樣多個(gè)操作就可以鏈接起來,形成一個(gè)大的流水線。


  通過stream的這個(gè)操作特性,我們可以方便的使用鏈?zhǔn)骄幊?只要這個(gè)操作方法返回類型為stream即可),將多個(gè)操作聯(lián)系起來.非常類似于數(shù)據(jù)庫操作的sql語法(從哪張表查,查詢條件是什么,查詢哪些列的數(shù)據(jù),排序規(guī)則如何等等),流水線的操作可以看作對(duì)數(shù)據(jù)源進(jìn)行數(shù)據(jù)庫式查詢。


  ●內(nèi)部迭代——與使用迭代器外部迭代的集合不同,流的迭代操作是在背后進(jìn)行的。


  使用迭代器對(duì)集合數(shù)據(jù)進(jìn)行迭代.這種方式有一定的缺陷:需要將如何迭代的代碼與邏輯代碼進(jìn)行耦合.


  // 需求: 從學(xué)生名字列表中,篩選出姓李的學(xué)生,再篩選出名字是三個(gè)字的學(xué)生,最后將結(jié)果打印


  Listtemp = new ArrayList<>();

  for (String name : list) {

  if (name.startsWith("李")) {// 通過姓氏篩選

  temp.add(name);

  }

  }

  Listtemp1 = new ArrayList<>();

  for (String name : temp) {

  if (name.length() == 3) {// 通過名字長度篩選

  temp1.add(name);

  }

  }

  for (String string : temp1) {// 打印結(jié)果

  System.out.println(string);

  }


  對(duì)于上面的案例,我們使用傳統(tǒng)的方式來做,看起來沒有問題,但是,實(shí)現(xiàn)之后,回到本質(zhì)上來,其實(shí)我們的需求僅僅是想做三件事而已,但是因?yàn)楦鞣N語法規(guī)范,我們不得不寫出循環(huán),再在循環(huán)中加入我們的邏輯.


  比如,如果我現(xiàn)在需求改變,不想通過這兩個(gè)條件篩選,那么,我們現(xiàn)在的代碼將會(huì)改動(dòng)很大.這就是耦合.


  而,使用stream的方式,真正的舍棄”怎么做”,而回歸到”做什么“上來.


  list.stream().

  filter(x -> x.startsWith("李")).// 篩選姓氏

  filter(x -> x.length() == 3).// 篩選名字長度

  forEach(System.out::println);// 打印


  顯而易見的,使用stream的方式更優(yōu)雅.而且,結(jié)果也是正確的.但是,上面的代碼,有沒有迭代呢?有,但是,這里的迭代,不再與邏輯耦合,這個(gè),就叫內(nèi)部迭代.


  stream 的特性


  盡管stream的獲取方式,離不開數(shù)組或者集合,但是,stream對(duì)數(shù)據(jù)的計(jì)算,與傳統(tǒng)方式完全不同.


  stream的特性,主要分為四個(gè)方面:


  1.無存儲(chǔ) 。Stream不是一種數(shù)據(jù)結(jié)構(gòu),它只是某種數(shù)據(jù)源的一個(gè)視圖,數(shù)據(jù)源可以是一個(gè)數(shù)組,集合等。


  如何理解視圖呢?


  比如,找出班上最高的五名同學(xué),僅僅是計(jì)算全班的身高而已,而不會(huì)影響這五名同學(xué).不會(huì)對(duì)整個(gè)班級(jí)有任何影響.


  2.不修改 。對(duì)Stream的任何修改都不會(huì)修改背后的數(shù)據(jù)源.


  比如過濾操作并不會(huì)刪除被過濾的元素,而是產(chǎn)生一個(gè)新Stream。產(chǎn)生的心得Stream流,也僅僅是一個(gè)視圖而已.


  3.惰式執(zhí)行。Stream上的操作并不會(huì)立即執(zhí)行,只有等到用戶真正需要結(jié)果的時(shí)候才會(huì)執(zhí)行。


  如果操作是中間操作的話,那么,是不會(huì)立馬就執(zhí)行的, 一直等到用戶要做終端操作的時(shí)候,才會(huì)執(zhí)行.


  如果操作過程中,方法返回值類型是Stream的,那么他就是中間操作, 如果不是,就是終端操作.


  Listlist = Arrays.asList(1,2,3,4,5);

  list.stream().filter(x -> {

  //經(jīng)過測(cè)試,如果沒有調(diào)用終端操作,該語句不會(huì)輸出在控制臺(tái).

  System.out.println("過濾操作");

  return x > 1;

  }).forEach(System.out::println);


  filter方法,返回類型為Stream,所以,該方法就是中間操作.


  foreach方法,返回類型不是Stream,所以,該方法就是終端操作.


  惰式執(zhí)行的意思是:上面的代碼,如果我們不調(diào)用foreach方法(終端操作),那么filter方法(中間操作)是一定不會(huì)執(zhí)行的,而在控制臺(tái)上一定不會(huì)輸出”過濾操作”.


  4.可消費(fèi)性。Stream只能被“消費(fèi)”一次,一旦遍歷過就會(huì)失效,就像容器的迭代器那樣,想要再次遍歷必須重新生成。


如何學(xué)習(xí)java api:Stream API特性


      以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“如何學(xué)習(xí)java api:Stream API特性”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


  相關(guān)文章


  JavaAPI的使用方法詳解


提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日韩一区二区视频在线观看 | 在线99视频 | 天堂va亚洲va欧美va国产 | 动漫美女胸被狂揉扒开吃奶动态图 | 欧美日韩在线视频免费完整 | 一区二区三区中文国产亚洲 | 人成精品 | 黄污视频网站 | 又黄又爽又色的性视频 | 午夜成人免费视频 | 亚洲高清成人欧美动作片 | 麻豆va在线精品免费播放 | 亚洲另类视频在线观看 | 久草视频中文 | 欧美超强性xxxxx | 美国一级大黄一片免费的网站 | 欧美一级成人一区二区三区 | a毛片免费观看完整 | 91久久99热青草国产 | 不卡一区二区在线观看 | 最新亚洲精品国自产在线观看 | 国产特黄视频 | 日韩国产成人精品视频人 | 黄网视频在线观看 | 亚洲日本中文字幕在线 | 爽爽爽爽爽爽爽太爽了免费观看 | 午夜一级片 | 国产成人欧美 | 手机毛片在线 | 色天天综合久久久久综合片 | 亚洲精品午夜aaa级久久久久 | 国产日产久久高清欧美一区 | 欧美日韩大片在线观看 | 78m成人免费视频 | 在线观看理论片免费韩国 | 欧美羞羞 | 国内偷自视频区视频综合 | 精品久久网 | 青草青青在线视频 | 午夜影院操 | 中文字幕日韩在线观看 |