這篇文章將為大家詳細(xì)講解有關(guān)java中Lambda表達(dá)式的用法,文章內(nèi)容質(zhì)量較高,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)公司服務(wù)項目包括大寧網(wǎng)站建設(shè)、大寧網(wǎng)站制作、大寧網(wǎng)頁制作以及大寧網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,大寧網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到大寧省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
什么是lambda表達(dá)式?
lambda表達(dá)式是一個可傳遞的代碼塊,可以在后面執(zhí)行一次或多次。我們可以將lambda表達(dá)式定義為一種簡潔、可傳遞的匿名函數(shù),先我們需要明確lambda表達(dá)式本質(zhì)上是一個函數(shù),雖然它不屬于某個特定的類,但具備參數(shù)列表、函數(shù)主體、返回類型,以及能夠拋出異常;其次它是匿名的,lambda表達(dá)式?jīng)]有具體的函數(shù)名稱;lambda表達(dá)式可以像參數(shù)一樣進(jìn)行傳遞,從而極大的簡化代碼的編寫。
例如:
class action implements ActionListener{ @Override public void actionPerformed(ActionEvent e){ System.out.println("now time is"+new Date()); Toolkit.getDefaultToolkit().beep(); } } public class Main{ public static void main(String[] args){ action a=new action(); Timer timer=new Timer(2000,a); timer.start(); JOptionPane.showMessageDialog(null, "is quit?"); //這個窗口用于防止main線程執(zhí)行完畢直接結(jié)束 } }
這個代碼中action類的a對象實際上只是作為一個代碼段傳給了Timer的構(gòu)造器,因為java是基于面對對象思想的語言,所以沒有函數(shù)調(diào)用,沒有代碼段的傳遞,所以必須把所需代碼封裝在一個類中,上文即action類。有了lambda表達(dá)式之后可以讓代碼更簡潔。
上文用lambda表示如下:
public class Main{ public static void main(String[] args){ Timer timer=new Timer(2000,(ActionEvent e)->{ System.out.println("now the time is"+new Date()); Toolkit.getDefaultToolkit().beep(); }); timer.start(); //結(jié)束 } }
用了lambda表達(dá)式是不是代碼可以變得很簡潔,如果e 的類型能通過下文推導(dǎo)得出那么可以省略參數(shù)類型,如果只有一個參數(shù)還可以省略括號,如下:
e->{ System.out.println(“now the time is”+new Date()); Toolkit.getDefaultToolkit().beep(); }
這個lambda表達(dá)式又可以等價于:
ActionListener al=e->{ System.out.println(“now the time is”+new Date()); Toolkit.getDefaultToolkit().beep(); }
然后把a(bǔ)l 扔進(jìn)Timer構(gòu)造器中。
ActionListener 作為一個接口,它只有一個抽象方法,這是作為函數(shù)式接口必須滿足的條件,函數(shù)式接口都能寫成lambda表達(dá)式。
再實現(xiàn)一個String數(shù)組 按照長度排序的代碼,便于理解:
public class Main{ public static void main(String[] args){ String[] con=new String[]{"apple","cat","bannane","foot","do"}; Arrays.sort(con,(str1,str2)->str1.length()-str2.length()); //第一種實現(xiàn) 這兒因為直接返回值所以沒有加"{"和"}"所以也不用加";" 上下文能推斷出這是String類型參數(shù), //所以不用加參數(shù)類型 Comparator<String> compare = (str1,str2)->s1.length()-s2.length(); Arrays.sort(con,compare);//第二種實現(xiàn),還可以采用寫一個類實現(xiàn)Comparator中的compare方法 //如: com com1=new com(); Arrays.sort(con.com1);//其本質(zhì)都是傳遞一段代碼 } class com implements Compartor<String>{ @Override public void compare(String str1,String str2){ return str1.length()-str2.length(); } } }
以上就是java中Lambda表達(dá)式的用法,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊,感謝各位的閱讀。
網(wǎng)站欄目:java中Lambda表達(dá)式的用法
本文來源:http://vcdvsql.cn/article4/gjepoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、搜索引擎優(yōu)化、關(guān)鍵詞優(yōu)化、全網(wǎng)營銷推廣、云服務(wù)器、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)