真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中Lambda表達(dá)式的用法

這篇文章將為大家詳細(xì)講解有關(guān)java中Lambda表達(dá)式的用法,文章內(nèi)容質(zhì)量較高,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括大寧網(wǎng)站建設(shè)、大寧網(wǎng)站制作、大寧網(wǎng)頁制作以及大寧網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,大寧網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到大寧省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

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

lambda表達(dá)式是一個(gè)可傳遞的代碼塊,可以在后面執(zhí)行一次或多次。我們可以將lambda表達(dá)式定義為一種簡(jiǎn)潔、可傳遞的匿名函數(shù),先我們需要明確lambda表達(dá)式本質(zhì)上是一個(gè)函數(shù),雖然它不屬于某個(gè)特定的類,但具備參數(shù)列表、函數(shù)主體、返回類型,以及能夠拋出異常;其次它是匿名的,lambda表達(dá)式?jīng)]有具體的函數(shù)名稱;lambda表達(dá)式可以像參數(shù)一樣進(jìn)行傳遞,從而極大的簡(jiǎ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?");
		//這個(gè)窗口用于防止main線程執(zhí)行完畢直接結(jié)束
	}

}

這個(gè)代碼中action類的a對(duì)象實(shí)際上只是作為一個(gè)代碼段傳給了Timer的構(gòu)造器,因?yàn)閖ava是基于面對(duì)對(duì)象思想的語言,所以沒有函數(shù)調(diào)用,沒有代碼段的傳遞,所以必須把所需代碼封裝在一個(gè)類中,上文即action類。有了lambda表達(dá)式之后可以讓代碼更簡(jiǎn)潔。

上文用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á)式是不是代碼可以變得很簡(jiǎn)潔,如果e 的類型能通過下文推導(dǎo)得出那么可以省略參數(shù)類型,如果只有一個(gè)參數(shù)還可以省略括號(hào),如下:

e->{
System.out.println(“now the time is”+new Date());
Toolkit.getDefaultToolkit().beep();
}

這個(gè)lambda表達(dá)式又可以等價(jià)于:

ActionListener al=e->{
System.out.println(“now the time is”+new Date());
Toolkit.getDefaultToolkit().beep();
}

然后把a(bǔ)l 扔進(jìn)Timer構(gòu)造器中。

ActionListener 作為一個(gè)接口,它只有一個(gè)抽象方法,這是作為函數(shù)式接口必須滿足的條件,函數(shù)式接口都能寫成lambda表達(dá)式。

再實(shí)現(xiàn)一個(gè)String數(shù)組 按照長(zhǎng)度排序的代碼,便于理解:

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());
		//第一種實(shí)現(xiàn)  這兒因?yàn)橹苯臃祷刂邓詻]有加"{"和"}"所以也不用加";" 上下文能推斷出這是String類型參數(shù),
		//所以不用加參數(shù)類型
		Comparator compare = (str1,str2)->s1.length()-s2.length();
		Arrays.sort(con,compare);//第二種實(shí)現(xiàn),還可以采用寫一個(gè)類實(shí)現(xiàn)Comparator中的compare方法
		//如:
		com com1=new com();
		Arrays.sort(con.com1);//其本質(zhì)都是傳遞一段代碼
	}
	class com implements Compartor{
		@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á)式的用法
當(dāng)前網(wǎng)址:http://weahome.cn/article/gjepoe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部