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

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

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

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

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

目的

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

推理一下

某接口,只有一個方法。

比如這個:

package java.lang;

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

或者是這個:

interface MyInterface{
    void sayHi();
}

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

一般我們要使用Runable子類開啟一個線程,要實現(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方法干點什么,要先實現(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)部類實現(xiàn)接口,使用方法

如果這個方法我就用一次,那我可以在內(nèi)部類中實現(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)部類實現(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)部類實現(xiàn)接口,使用方法

我就用一次,要什么名字???能少輸入一個字符都是賺的。需要借助父類或者接口名來實現(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á)式的,實現(xiàn)方法

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

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

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) {

        //此處需要借助一個父類或接口對象來存放,調(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ù),可以不指定類型,它會自適應(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é)果:

只有一個參數(shù)

那我括號都可以省了!

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);
}

只有一條語句

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

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、接口只有一個方法,可有參數(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)容,大括號可省。

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

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

相關(guān)文章

  • 一個注解搞定Spring Security基于Oauth2的SSO單點登錄功能

    一個注解搞定Spring Security基于Oauth2的SSO單點登錄功能

    本文主要介紹 同域 和 跨域 兩種不同場景單點登錄的實現(xiàn)原理,并使用 Spring Security 來實現(xiàn)一個最簡單的跨域 SSO客戶端。對Spring Security基于Oauth2的SSO單點登錄功能感興趣的朋友一起看看吧
    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顧名思義就是用來做交換的。這里主要是兩個線程之間交換持有的對象。當(dāng)Exchanger在一個線程中調(diào)用exchange方法之后,會等待另外的線程調(diào)用同樣的exchange方法。兩個線程都調(diào)用exchange方法之后,傳入的參數(shù)就會交換。
    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ì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • spring?boot?Mybatis?攔截器實現(xiàn)拼接sql和修改的代碼詳解

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

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

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

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

    java SpringBoot自定義注解,及自定義解析器實現(xiàn)對象自動注入操作

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

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

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

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

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

    Java的堵塞隊列BlockingQueue詳解

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

最新評論

霍城县| 慈利县| 夹江县| 临猗县| 乾安县| 温泉县| 夹江县| 东至县| 辽阳县| 和硕县| 南部县| 靖边县| 嘉善县| 武穴市| 本溪市| 武义县| 屏山县| 商洛市| 邢台县| 陈巴尔虎旗| 岑巩县| 伽师县| 冀州市| 河北省| 年辖:市辖区| 内黄县| 吴忠市| 惠州市| 比如县| 岚皋县| 新密市| 桓台县| 福建省| 辽阳县| 板桥市| 洛浦县| 册亨县| 鹰潭市| 北宁市| 汉沽区| 铜鼓县|