lambda表達(dá)式如何正確的在Java8項(xiàng)目中使用-創(chuàng)新互聯(lián)

這篇文章給大家介紹lambda表達(dá)式如何正確的在Java8項(xiàng)目中使用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)公司客戶idc服務(wù)中心,提供成都棕樹機(jī)房、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級技術(shù)保障。

在Java8 里面Lambda是最火的主題,不僅僅是因?yàn)檎Z法的改變,更重要的是帶來了函數(shù)式編程的思想,我覺得優(yōu)秀的程序員,有必要學(xué)習(xí)一下函數(shù)式編程的思想以開闊思路。所以這篇文章聊聊Lambda的應(yīng)用場景,性能,也會(huì)提及下不好的一面。

Java為何需要Lambda

1996年1月,Java 1.0發(fā)布了,此后計(jì)算機(jī)編程領(lǐng)域發(fā)生了翻天覆地的變化。商業(yè)發(fā)展需要更復(fù)雜的應(yīng)用,大多數(shù)程序都跑在更強(qiáng)大的裝備多核CPU的機(jī)器上。帶有高效運(yùn)行期編譯器的Java虛擬機(jī)(JVM)的出現(xiàn),使得程序員將精力更多放在編寫干凈、易于維護(hù)的代碼上,而不是思考如何將每一個(gè)CPU時(shí)鐘、每一字節(jié)內(nèi)存物盡其用。

多核CPU的出現(xiàn)成了“房間里的大象”,無法忽視卻沒人愿意正視。算法中引入鎖不但容易出錯(cuò),而且消耗時(shí)間。人們開發(fā)了java.util.concurrent包和很多第三方類庫,試圖將并發(fā)抽象化,用以幫助程序員寫出在多核CPU上運(yùn)行良好的程序。不幸的是,到目前為止,我們走得還不夠遠(yuǎn)。

那些類庫的開發(fā)者使用Java時(shí),發(fā)現(xiàn)抽象的級別還不夠。處理大數(shù)據(jù)就是個(gè)很好的例子,面對大數(shù)據(jù),Java還欠缺高效的并行操作。Java 8允許開發(fā)者編寫復(fù)雜的集合處理算法,只需要簡單修改一個(gè)方法,就能讓代碼在多核CPU上高效運(yùn)行。為了編寫并行處理這些大數(shù)據(jù)的類庫,需要在語言層面上修改現(xiàn)有的Java:增加lambda表達(dá)式。

當(dāng)然,這樣做是有代價(jià)的,程序員必須學(xué)習(xí)如何編寫和閱讀包含lambda表達(dá)式的代碼,但是,這不是一樁賠本的買賣。與手寫一大段復(fù)雜的、線程安全的代碼相比,學(xué)習(xí)一點(diǎn)新語法和一些新習(xí)慣容易很多。開發(fā)企業(yè)級應(yīng)用時(shí),好的類庫和框架極大地降低了開發(fā)時(shí)間和成本,也掃清了開發(fā)易用且高效的類庫的障礙。

Lambda的應(yīng)用場景

下面我將重點(diǎn)放在函數(shù)式編程的實(shí)用性上,包括那些可以被大多數(shù)程序員理解和使用的技術(shù),我們關(guān)心的如何寫出好代碼,而不是符合函數(shù)編程風(fēng)格的代碼。

1.1.1 1.使用() -> {} 替代匿名類

現(xiàn)在Runnable線程,Swing,JavaFX的事件監(jiān)聽器代碼等,在java 8中你可以使用Lambda表達(dá)式替代丑陋的匿名類。

//Before Java 8:
new Thread(new Runnable() {
 @Override
 public void run() {
  System.out.println("Before Java8 ");
 }
}).start();
//Java 8 way:
new Thread(() -> System.out.println("In Java8!"));
// Before Java 8:
JButton show = new JButton("Show");
show.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
   System.out.println("without lambda expression is boring");
  }
  });
// Java 8 way:
show.addActionListener((e) -> {
 System.out.println("Action !! Lambda expressions Rocks");
});

當(dāng)前名稱:lambda表達(dá)式如何正確的在Java8項(xiàng)目中使用-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://muchs.cn/article48/dpichp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、軟件開發(fā)、云服務(wù)器電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)