国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站推廣服務(wù)網(wǎng)站連鎖微信朋友圈廣告30元 1000次

網(wǎng)站推廣服務(wù)網(wǎng)站連鎖,微信朋友圈廣告30元 1000次,網(wǎng)站建設(shè)推薦公司,o2o網(wǎng)站開發(fā)目錄 ?什么是Lambda表達(dá)式 ?Lambda表達(dá)式的語(yǔ)法 ?函數(shù)式接口 ?Lambda表達(dá)式的使用 ?變量捕獲 ? Lambda表達(dá)式在集合中的使用 ?Collection的foreach(): ?List的sort(): ?Map的foreach() ?什么是Lambda表達(dá)式 Lambda 表達(dá)式是 Java SE 8中一個(gè)…

目錄

?什么是Lambda表達(dá)式

?Lambda表達(dá)式的語(yǔ)法

?函數(shù)式接口

??Lambda表達(dá)式的使用

??變量捕獲

??Lambda表達(dá)式在集合中的使用

?Collection的foreach():

?List的sort():

?Map的foreach()


?什么是Lambda表達(dá)式

Lambda 表達(dá)式是 Java SE 8中一個(gè)重要的新特性,它是一種匿名函數(shù),常作為函數(shù)式編程的一部分,用于向函數(shù)傳遞行為作為參數(shù),或者用于將行為作為返回值返回。 Lambda表達(dá)式提供了一個(gè)正常的參數(shù)列表和一個(gè)使用這些參數(shù)的主體(body, 可以是一個(gè)表達(dá)式或一個(gè)代碼塊)。

?Lambda表達(dá)式的語(yǔ)法

基本語(yǔ)法 : (parameters) ->{ 方法體 }
①. paramaters :類似方法中的形參列表,這里的參數(shù)是函數(shù)式接口里的參數(shù)。(參數(shù)類型可以明確的聲明 ,也可不聲明而由 JVM 隱含的推斷;當(dāng)只有一個(gè)推斷類型時(shí)可以省略掉圓括號(hào))
②. -> :可理解為 被用于 的意思
③. 方法體 :可以是表達(dá)式也可以代碼塊,是函數(shù)式接口里方法的實(shí)現(xiàn)。(代碼塊可返回一個(gè)值或者什么都不返回,這里的代碼塊塊等同于方法的方法體;如果是表達(dá)式,也可以返回一個(gè)值或者什么都不反回)
//1. 不需要參數(shù),返回值為2
()->2;
//2. 接收一個(gè)參數(shù)(數(shù)字類型),返回其2倍的值
x->2*x;
//3. 接受2個(gè)參數(shù)(數(shù)字),并返回他們的和
(x,y)->x+y;
//4. 接收2個(gè)int型整數(shù),返回他們的乘積
(int x,int y)->x*y;
//5. 接受一個(gè)string對(duì)象,并在控制臺(tái)打印,不返回任何值
(String s)->System.out.print(s);
注:
①.->前只有一個(gè)參數(shù),()可以省略;
②.->后只有一條語(yǔ)句,{}可以省略;
③.->后只有return語(yǔ)句,return可以去掉;
④.()里 的參數(shù)類型可以省略,如果要省略,每個(gè)參數(shù)的類型都要省略。

?函數(shù)式接口

要了解 Lambda 表達(dá)式 , 還需要先了解什么是函數(shù)式接口。函數(shù)式接口是一種特殊的接口,它的接口里有且只有一個(gè)抽象方法
@FunctionalInterface
interface A {//抽象方法有且只有一個(gè)public void fun();//可以有被default修飾的具體方法default void fun2() {System.out.println("JDK1.8新特性,default默認(rèn)方法可以有具體的實(shí)現(xiàn)");}
}

注:

①.如果一個(gè)接口只有一個(gè)抽象方法,那么該接口就是一個(gè)函數(shù)式接口。

②.可以在接口上方加上@FunctionalInterface注釋,讓編譯器幫助我們檢查該接口是不是一個(gè)函數(shù)式接口。

③.JDK1.8之后,函數(shù)式接口里允許存在default方法修飾的具體方法。

??Lambda表達(dá)式的使用

我們先定義幾個(gè)函數(shù)式接口:

//無返回值無參數(shù)
@FunctionalInterface
interface NoParameterNoReturn {void test();
}
//無返回值一個(gè)參數(shù)
@FunctionalInterface
interface OneParameterNoReturn {void test(int a);
}
//無返回值多個(gè)參數(shù)
@FunctionalInterface
interface MoreParameterNoReturn {void test(int a,int b);
}//有返回值無參數(shù)
@FunctionalInterface
interface NoParameterReturn {int test();
}
//有返回值一個(gè)參數(shù)
@FunctionalInterface
interface OneParameterReturn {int test(int a);
}//有返回值多參數(shù)
@FunctionalInterface
interface MoreParameterReturn {int test(int a,int b);
}

下面我們通過Lambda表達(dá)式對(duì)上面幾個(gè)函數(shù)式接口進(jìn)行實(shí)例化操作:

public class Test {public static void main(String[]args) {//無參數(shù)無返回值NoParameterNoReturn noParameterNoReturn = () -> {System.out.println("無參數(shù)無返回值");};noParameterNoReturn.test();//一個(gè)參數(shù)無返回值OneParameterNoReturn oneParameterNoReturn = (int a) -> {System.out.println("一個(gè)參數(shù)無返回值:" + a);};oneParameterNoReturn.test(10);//多個(gè)參數(shù)無返回值MoreParameterNoReturn moreParameterNoReturn = (int a, int b) -> {System.out.println("多個(gè)參數(shù)無返回值:" + a + "" + b);};moreParameterNoReturn.test(20, 30);//有返回值無參數(shù)NoParameterReturn noParameterReturn = () -> {System.out.println("有返回值無參數(shù)");return 40;};int ret = noParameterReturn.test();System.out.println(ret);//有返回值有一個(gè)參數(shù)OneParameterReturn oneParameterReturn = (int a) -> {System.out.println("有返回值有一個(gè)參數(shù)");return a;};ret = oneParameterReturn.test(50);System.out.println(ret);//有返回值多個(gè)參數(shù)MoreParameterReturn moreParameterReturn = (int a, int b) -> {System.out.println("有返回值多個(gè)參數(shù)");return a + b;};ret = moreParameterReturn.test(60, 70);System.out.println(ret);}
}

注:Lambda表達(dá)式只能應(yīng)用于函數(shù)式接口。

??變量捕獲

變量捕獲是指將外部類中的變量復(fù)制到內(nèi)部類中,這樣內(nèi)部類就可以在外部類的作用域之外訪問這些變量。

匿名內(nèi)部類和lambda表達(dá)式都存在變量捕獲:

@FunctionalInterface
interface B {void fun();
}
public class Test {public static void main(String[] args) {int a = 10;//匿名內(nèi)部類:B b1 = new B() {@Overridepublic void fun() {System.out.println("匿名內(nèi)部類a=" + a);}};b1.fun();//Lambda表達(dá)式:B b2 = () -> {System.out.println("Lambda表達(dá)式a=" + a);};b2.fun();}
}

運(yùn)行結(jié)果如下:

需要注意的是:被捕獲的變量要么是被?nal修飾,要么是隱式 final 的(在使用之前沒有被修改):

@FunctionalInterface
interface B {void fun();
}
public class Test {public static void main(String[] args) {int a = 10;//a = 11;//①//匿名內(nèi)部類:B b1 = new B() {@Overridepublic void fun() {//a = 11;//②System.out.println("匿名內(nèi)部類a=" + a);}};b1.fun();//a = 11;//③}
}
在①、②、③任意一處去掉注釋都會(huì)報(bào)錯(cuò):

??Lambda表達(dá)式在集合中的使用

為了能夠讓 Lambda Java 的集合類集更好的一起使用,Java集合中新增了部分接口,以便與 Lambda 表達(dá)式對(duì)接:
接口新增方法
Collection
removeIf()、spliterator()、stream()、parallelStream()、forEach()
List
replaceAll()、sort()
Map
getOrDefault()、forEach()、replaceAll()、putIfAbsent()、remove()、replace()、computeIfAbsent()、computeIfPresent()、compute()、merge()

?Collection的foreach():

foreach()的部分源碼:

foreach()的應(yīng)用:

public class Test {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(3);list.add(2);list.forEach(s-> System.out.print(s+" "));}
}

運(yùn)行結(jié)果:

?List的sort():

sort()的部分源碼:

sort()的應(yīng)用:

class Test2 {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(3);list.add(2);list.sort((str1,str2)->str1-str2);System.out.println(list);}}

運(yùn)行結(jié)果:

?Map的foreach()

foreach()的部分源碼:

foreach()的應(yīng)用:

class Test3 {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<>();map.put("a", 1);map.put("b", 2);map.put("c",3);map.forEach((k,v)->System.out.println(k+"="+v));}
}

運(yùn)行結(jié)果:

http://aloenet.com.cn/news/32625.html

相關(guān)文章:

  • 湛江免費(fèi)建站模板短視頻剪輯培訓(xùn)班多少錢
  • 剛建的網(wǎng)站百度搜不到聯(lián)合早報(bào) 即時(shí)消息
  • 推廣網(wǎng)站怎么建設(shè)和維護(hù)seo資訊
  • 產(chǎn)品外包裝設(shè)計(jì)網(wǎng)站直通車關(guān)鍵詞優(yōu)化
  • 鄭州天梯網(wǎng)站制作seo研究協(xié)會(huì)
  • wordpress左邊欄網(wǎng)頁(yè)seo優(yōu)化
  • 哪家公司建網(wǎng)站好推廣代理平臺(tái)
  • 開州快速建網(wǎng)站江蘇網(wǎng)頁(yè)定制
  • 外包做網(wǎng)站賺錢么讓手機(jī)變流暢的軟件下載
  • 網(wǎng)站站內(nèi)消息設(shè)計(jì)方案優(yōu)化大師官方
  • 個(gè)人網(wǎng)站建站指南營(yíng)銷策劃書模板
  • 網(wǎng)站創(chuàng)建時(shí)間查詢?cè)鯓油茝Vapp別人才愿意下載
  • 網(wǎng)站建設(shè)banner內(nèi)部?jī)?yōu)化
  • 做國(guó)外百科知識(shí)網(wǎng)站百度代理查詢
  • 網(wǎng)站動(dòng)態(tài)海報(bào)效果怎么做的寧波seo搜索引擎優(yōu)化公司
  • 做網(wǎng)頁(yè)賺錢seo排名優(yōu)化方式
  • 淘寶購(gòu)物券網(wǎng)站怎么做童程童美少兒編程怎樣收費(fèi)
  • 哪里有網(wǎng)站建設(shè)多少錢百度問一問付費(fèi)咨詢
  • 西寧網(wǎng)站建設(shè)嘉薦君博lseo優(yōu)化的主要內(nèi)容
  • wap歌詞廊坊seo推廣
  • 服務(wù)器 網(wǎng)站 app網(wǎng)絡(luò)營(yíng)銷的收獲與體會(huì)
  • 汽車做網(wǎng)站廣州網(wǎng)站建設(shè)推薦
  • 順的做網(wǎng)站便宜嗎seo主要優(yōu)化
  • wordpress 添加錨點(diǎn)seo服務(wù)外包客服
  • 怎樣更新網(wǎng)站內(nèi)容網(wǎng)絡(luò)營(yíng)銷五種方法
  • wordpress播客主題濰坊seo招聘
  • 前端基礎(chǔ)知識(shí)谷歌官方seo入門指南
  • 醫(yī)院的網(wǎng)站關(guān)鍵詞定位一般是什么seo優(yōu)化團(tuán)隊(duì)
  • 合肥大型網(wǎng)站sem是指什么
  • 更換網(wǎng)站模板比優(yōu)化更好的詞是