吊打Java面試官之Lambda表達式 Stream API_第1頁
吊打Java面試官之Lambda表達式 Stream API_第2頁
吊打Java面試官之Lambda表達式 Stream API_第3頁
吊打Java面試官之Lambda表達式 Stream API_第4頁
吊打Java面試官之Lambda表達式 Stream API_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第吊打Java面試官之Lambda表達式StreamAPI目錄一、jdk8新特性簡介二、Lambda表達式簡單理解一下Lambda表達式Lambda表達式的使用三、函數式接口1.什么是函數式接口2.如何理解函數式接口3.Java內置四大核心函數式接口四、方法引用與構造器引用方法引用構造器引用和數組引用五、StreamAPI1.StreamAPI的說明2.為什么要使用StreamAPI3.創建Stream的四種方式4.Stream的中間操作及其測試5.Stream的終止操作及其測試六、Optional類的使用Optional類的重要意義:

一、jdk8新特性簡介

二、Lambda表達式

簡單理解一下Lambda表達式

publicclassLambdaTest{

@Test

publicvoidtest1(){

Runnabler1=newRunnable(){

@Override

publicvoidrun(){

System.out.println("我愛北京天安門");

r1.run();

System.out.println("******************************************");

Runnabler2=()-System.out.println("我愛北京故宮");

r2.run();

@Test

publicvoidtest2(){

ComparatorIntegercom1=newComparatorInteger(){

@Override

publicintcompare(Integero1,Integero2){

returnIpare(o1,o2);

intcompare1=pare(12,21);

System.out.println(compare1);

System.out.println("**********************************");

//Lambda表達式的寫法

ComparatorIntegercom2=(o1,o2)-Ipare(o1,o2);

intcompare2=com2.compare(32,21);

System.out.println(compare2);

System.out.println("************************************");

//方法引用

ComparatorIntegercom3=Integer::compare;

intcompare3=pare(32,21);

System.out.println(compare2);

}

Lambda表達式的使用

1.舉例:(o1,o2)-Ipare(o1,o2);

2.格式:

-:lambda操作符或箭頭操作符

-:左邊:lambda形參列表(其實就是接口中的抽象方法的形參列表)

-:右邊:lambda體(其實就是重寫的抽象方法的方法體)

3.Lambda表達式的使用:(分為6種情況介紹)

總結:(重點看這個)

-左邊:lambda形參列表的參數類型可以省略(類型推斷);如果lambda形參列表只有一個參數,其一對()也可以省略

-右邊:lambda體應該使用一對{}包裹;如果lambda體只有一條執行語句(可能時return語句),可以省略這一對{}和return關鍵字

4.Lambda表達式的本質:作為函數式接口的實例

5.如果一個接口中,只聲明了一個抽象方法,則此接口就稱為函數式接口

publicclassLambdaTest1{

//語法格式一:無參,無返回值

@Test

publicvoidtest1(){

Runnabler1=newRunnable(){

@Override

publicvoidrun(){

System.out.println("我愛北京天安門");

r1.run();

System.out.println("******************************************");

Runnabler2=()-{

System.out.println("我愛北京故宮");

r2.run();

//語法格式二:Lambda需要一個參數,但是沒有返回值。

@Test

publicvoidtest2(){

ConsumerStringcon=newConsumerString(){

@Override

publicvoidaccept(Strings){

System.out.println(s);

con.accept("謊言和誓言的區別什么?");

System.out.println("**********************************");

ConsumerStringcon1=(Strings)-{

System.out.println(s);

con1.accept("一個是聽得人當真了,一個是說的人當真了");

//語法格式三:數據類型可以省略,因為可由編譯器推斷得出,稱為"類型推斷"

@Test

publicvoidtest3(){

ConsumerStringcon1=(Strings)-{

System.out.println(s);

con1.accept("一個是聽的人當真了,一個是說的人當真了");

System.out.println("****************************");

ConsumerStringcon2=(s)-{

System.out.println(s);

con2.accept("一個是聽的人當真了,一個是說的人當真了");

@Test

publicvoidtest4(){

ArrayListStringobjects=newArrayList();//類型推斷(泛型)

int[]arr={1,2,3};//類型推斷(int[]arr=newint[]{1,2,3};)

//語法格式四:Lambda若只需要一個參數時,參數的小括號可以省略

@Test

publicvoidtest5(){

ConsumerStringcon1=(s)-{

System.out.println(s);

con1.accept("一個是聽的人當真了,一個是說的人當真了");

System.out.println("****************************");

ConsumerStringcon2=s-{

System.out.println(s);

con2.accept("一個是聽的人當真了,一個是說的人當真了");

//語法格式五:Lambda需要兩個或兩個以上的參數,多條執行語句,并且可以有返回值

@Test

publicvoidtest6(){

ComparatorIntegercom1=newComparatorInteger(){

@Override

publicintcompare(Integero1,Integero2){

System.out.println(o1);

System.out.println(o2);

returnIpare(o1,o2);

System.out.println(pare(12,21));

System.out.println("*******************************");

ComparatorIntegercom2=(o1,o2)-{

System.out.println(o1);

System.out.println(o2);

returnpareTo(o2);

System.out.println(pare(12,6));

//語法格式六:當Lambda體只有一條語句時,return與大括號若有,都可以省略

@Test

publicvoidtest7(){

ComparatorIntegercom1=(o1,o2)-{

returnpareTo(o2);

System.out.println(pare(12,6));

System.out.println("******************************");

ComparatorIntegercom2=(o1,o2)-pareTo(o2);

System.out.println(pare(12,21));

@Test

publicvoidtest8(){

ConsumerStringcon1=s-{

System.out.println(s);

con1.accept("一個是聽的人當真了,一個是說的人當真了");

System.out.println("*********************************");

ConsumerStringcon2=s-System.out.println(s);

con2.accept("一個是聽的人當真了,一個是說的人當真了");

}

三、函數式接口

1.什么是函數式接口

2.如何理解函數式接口

總結:只有函數

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論