最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用lambda表達(dá)式簡化代碼的示例詳解

 更新時(shí)間:2022年11月10日 14:09:53   作者:在博客做筆記的路人甲  
這篇文章主要給大家介紹了Java如何使用lambda表達(dá)式簡化代碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

代碼,自然寫的越簡潔越好啦,寫的人舒服,看的人也舒服,一切為了高效。

要把有限的時(shí)間花到其它有意思的事情上去。

目的

學(xué)習(xí)簡化代碼的思路,使用jdk8新特性lamada表達(dá)式。

推理一下

某接口,只有一個(gè)方法。

比如這個(gè):

package java.lang;

@FunctionalInterface
public interface Runnable {
    void run();
}

或者是這個(gè):

interface MyInterface{
    void sayHi();
}

實(shí)現(xiàn)接口,使用方法

一般我們要使用Runable子類開啟一個(gè)線程,要實(shí)現(xiàn)Runnable接口,調(diào)用Threead類的start方法:

public class LeaningLamda implements Runnable{
    public static void main(String[] args) {
        new Thread(new LeaningLamda()).start();
    }
    @Override
    public void run() {
        System.out.println(this.getClass()+"我已經(jīng)在跑了!");
    }
}

或者用sayHi方法干點(diǎn)什么,要先實(shí)現(xiàn)接口,再調(diào)用:

public class LeaningLamda2 implements MyInterface{
    public static void main(String[] args) {
        new LeaningLamda2().sayHi();
    }

    @Override
    public void sayHi() {
        System.out.println("ok ok ok ok ,i am say Hi!");
    }
}
interface MyInterface{
    void sayHi();
}

內(nèi)部類實(shí)現(xiàn)接口,使用方法

如果這個(gè)方法我就用一次,那我可以在內(nèi)部類中實(shí)現(xiàn)它,提高程序性能:

public class LeaningLamda{
    static class MyRun implements Runnable{
        @Override
        public void run() {
            System.out.println(this.getClass()+"我已經(jīng)在跑了!");
        }
    }

    public static void main(String[] args) {
        new Thread(new MyRun()).start();
    }
}

一樣的用sayHi方法:

public class LeaningLamda2 {
    static class MyHi implements MyInterface{
        @Override
        public void sayHi() {
            System.out.println("ok ok ok ok ,i am say Hi!");
        }
    }

    public static void main(String[] args) {
        new MyHi().sayHi();
    }
}
interface MyInterface{
    void sayHi();
}

局部內(nèi)部類實(shí)現(xiàn)接口,使用方法

既然只使用一次,那我為啥不把它放在使用的方法里面去,性能不就又UpUpUpUp。

像這樣: 

public class LeaningLamda{
    public static void main(String[] args) {

        class MyRun implements Runnable{
            @Override
            public void run() {
                System.out.println(this.getClass()+"我已經(jīng)在跑了!");
            }
        }
        //調(diào)用在定義后面,謝謝。
        new Thread(new MyRun()).start();
    }
}

或是這樣:

public class LeaningLamda2 {
    public static void main(String[] args) {
        
        class MyHi implements MyInterface{
            @Override
            public void sayHi() {
                System.out.println("ok ok ok ok ,i am say Hi!");
            }
        }
        new MyHi().sayHi();
    }
}
interface MyInterface{
    void sayHi();
}

匿名內(nèi)部類實(shí)現(xiàn)接口,使用方法

我就用一次,要什么名字啊?能少輸入一個(gè)字符都是賺的。需要借助父類或者接口名來實(shí)現(xiàn)。

你看:

public class LeaningLamda{
    public static void main(String[] args) {
        
        //需要借助父類或者接口來聲明
        new Thread(new Runnable(){
            @Override
            public void run() {
                System.out.println(this.getClass()+"我已經(jīng)在跑了!");
            }
        }).start();
    }
}

又如:

public class LeaningLamda2 {
    public static void main(String[] args) {

        new MyInterface(){
            @Override
            public void sayHi() {
                System.out.println("ok ok ok ok ,i am say Hi!");
            }
        }.sayHi();
    }
}
interface MyInterface{
    void sayHi();
}

使用lamda表達(dá)式的,實(shí)現(xiàn)方法

jdk 8 看不下去了,給我們提供了一個(gè)更加簡化的方案,你看:

lamda表達(dá)式實(shí)現(xiàn)創(chuàng)建單個(gè)簡單線程:

public class LeaningLamda{
    public static void main(String[] args) {
        
        new Thread(()-> {
                System.out.println("我已經(jīng)在跑了!");
            }
        ).start();
    }
}

lamda表達(dá)式sayHi:

public class LeaningLamda2 {
    public static void main(String[] args) {

        //此處需要借助一個(gè)父類或接口對(duì)象來存放,調(diào)用它
        MyInterface ls = ()->{  
            System.out.println("ok ok ok ok ,i am say Hi!"); };
        ls.sayHi();
    }
}
interface MyInterface{
    void sayHi();
}

可帶參數(shù)

lamda表達(dá)式可以帶參數(shù),可以不指定類型,它會(huì)自適應(yīng)類型:

public class LeaningLamda2 {
    public static void main(String[] args) {

        MyInterface ls = (i,str)->{
            System.out.println("int:"+i);
            System.out.println("String:"+str);};

        ls.sayHi(520,"i love you!");
    }
}
interface MyInterface{
    void sayHi(int i,String str);
}

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

只有一個(gè)參數(shù)

那我括號(hào)都可以省了!

public class LeaningLamda2 {
    public static void main(String[] args) {

        MyInterface ls = str-> {System.out.println("String:"+str);};
        ls.sayHi("i love you!");
    }
}
interface MyInterface{
    void sayHi(String str);
}

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

有返回值

如果有返回值呢,正常返回:

public class LeaningLamda2 {
    public static void main(String[] args) {

        MyInterface ls = (String str)-> {
            String str2 = "最后的贏家是:"+str;
            return str2;};
        System.out.println(ls.sayHi("lurenjia"));
    }
}
interface MyInterface{
    String sayHi(String str);
}

只有一條語句

如果方法只有一條語句,那大括號(hào)也沒有必要,可以省略:

public class LeaningLamda2 {
    public static void main(String[] args) {

        MyInterface ls = (int i,String str)-> System.out.println("int:"+i+"----String:"+str);
        ls.sayHi(520,"i love you!");
    }
}
interface MyInterface{
    void sayHi(int i,String str);
}

究極省略,不能再省了

 就一條語句,是返回值:

public class LeaningLamda2 {
    public static void main(String[] args) {

        MyInterface ls = str-> "最后的贏家是:"+str;
        System.out.println(ls.sayHi("中國"));
    }
}
interface MyInterface{
    String sayHi(String str);
}

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

lamda總結(jié)

常用于創(chuàng)建簡單線程。

1、接口只有一個(gè)方法,可有參數(shù),可有返回值。

2、本方法內(nèi)容簡單,使用較少。

3、基本形式為:

接口或父類   名稱  = (參數(shù)類型1 參數(shù)1,參數(shù)類型2 參數(shù)2,...)->{
            內(nèi)容
        };
名稱.方法(參數(shù)1,參數(shù)2,...);

4、可以省略的是:

1、lamada參數(shù)類型可省,它自適應(yīng)。

2、方法內(nèi)容只有一條內(nèi)容,大括號(hào)可省。

3、內(nèi)容只有一句返回語句,return可省,直接寫值。

到此這篇關(guān)于Java使用lambda表達(dá)式簡化代碼的示例詳解的文章就介紹到這了,更多相關(guān)Java lambda表達(dá)式簡化代碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一個(gè)注解搞定Spring Security基于Oauth2的SSO單點(diǎn)登錄功能

    一個(gè)注解搞定Spring Security基于Oauth2的SSO單點(diǎn)登錄功能

    本文主要介紹 同域 和 跨域 兩種不同場景單點(diǎn)登錄的實(shí)現(xiàn)原理,并使用 Spring Security 來實(shí)現(xiàn)一個(gè)最簡單的跨域 SSO客戶端。對(duì)Spring Security基于Oauth2的SSO單點(diǎn)登錄功能感興趣的朋友一起看看吧
    2021-09-09
  • 普通類注入不進(jìn)spring bean的解決方法

    普通類注入不進(jìn)spring bean的解決方法

    這篇文章主要介紹了普通類注入不進(jìn)spring bean的解決方法,幫助大家更好的理解和使用spring bean,感興趣的朋友可以了解下
    2021-01-01
  • 解析Java并發(fā)Exchanger的使用

    解析Java并發(fā)Exchanger的使用

    Exchanger是java 5引入的并發(fā)類,Exchanger顧名思義就是用來做交換的。這里主要是兩個(gè)線程之間交換持有的對(duì)象。當(dāng)Exchanger在一個(gè)線程中調(diào)用exchange方法之后,會(huì)等待另外的線程調(diào)用同樣的exchange方法。兩個(gè)線程都調(diào)用exchange方法之后,傳入的參數(shù)就會(huì)交換。
    2021-06-06
  • 解決SpringBoot中LocalDateTime返回前端數(shù)據(jù)為數(shù)組結(jié)構(gòu)的問題

    解決SpringBoot中LocalDateTime返回前端數(shù)據(jù)為數(shù)組結(jié)構(gòu)的問題

    本文主要介紹了解決SpringBoot中LocalDateTime返回前端數(shù)據(jù)為數(shù)組結(jié)構(gòu)的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • spring?boot?Mybatis?攔截器實(shí)現(xiàn)拼接sql和修改的代碼詳解

    spring?boot?Mybatis?攔截器實(shí)現(xiàn)拼接sql和修改的代碼詳解

    這篇文章主要介紹了spring?boot?Mybatis?攔截器實(shí)現(xiàn)拼接sql和修改,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Linux下Java環(huán)境變量的安裝與配置

    Linux下Java環(huán)境變量的安裝與配置

    這篇文章給大家介紹了Linux下Java環(huán)境變量的安裝與配置,本文以jdk1.6.0_43為例,給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-07-07
  • java SpringBoot自定義注解,及自定義解析器實(shí)現(xiàn)對(duì)象自動(dòng)注入操作

    java SpringBoot自定義注解,及自定義解析器實(shí)現(xiàn)對(duì)象自動(dòng)注入操作

    這篇文章主要介紹了java SpringBoot自定義注解,及自定義解析器實(shí)現(xiàn)對(duì)象自動(dòng)注入操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 關(guān)于SpringBoot攔截器攔截靜態(tài)資源的問題

    關(guān)于SpringBoot攔截器攔截靜態(tài)資源的問題

    這篇文章主要介紹了關(guān)于SpringBoot攔截器攔截靜態(tài)資源的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 在Java中FreeMarker?模板來定義字符串模板

    在Java中FreeMarker?模板來定義字符串模板

    這篇文章主要介紹了在Java中FreeMarker?模板來定義字符串模板,文章基于Java的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-04-04
  • Java的堵塞隊(duì)列BlockingQueue詳解

    Java的堵塞隊(duì)列BlockingQueue詳解

    這篇文章主要介紹了Java的堵塞隊(duì)列BlockingQueue詳解,阻塞隊(duì)列常用于生產(chǎn)者和消費(fèi)者的場景,生產(chǎn)者是向隊(duì)列里添加元素的線程,消費(fèi)者是從隊(duì)列里取元素的線程,需要的朋友可以參考下
    2023-12-12

最新評(píng)論

余江县| 甘南县| 那坡县| 磐石市| 磐石市| 汉源县| 那坡县| 玉龙| 高雄市| 武隆县| 资溪县| 牙克石市| 谷城县| 教育| 宜川县| 密山市| 惠州市| 普兰县| 曲沃县| 武汉市| 莱州市| 兴海县| 高邑县| 二连浩特市| 阳西县| 古丈县| 宁陵县| 光泽县| 明溪县| 武陟县| 鄄城县| 永福县| 德钦县| 买车| 博乐市| 广南县| 隆化县| 乌拉特后旗| 富锦市| 远安县| 沙雅县|