国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java中Lambda表達(dá)式的使用詳解

Java中Lambda表達(dá)式的使用詳解

2022-01-25 00:52四季人06 Java教程

Lambda 表達(dá)式,也可稱(chēng)為閉包,它是推動(dòng) Java 8 發(fā)布的最重要新特性。Lambda 允許把函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中)。使用 Lambda 表達(dá)式可以使代碼變的更加簡(jiǎn)潔緊湊

理解函數(shù)式接口以及 Lambda表達(dá)式的發(fā)展過(guò)程

任何接口,只包含唯一一個(gè)抽象方法,就是函數(shù)式接口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
 * lambdab表達(dá)式的發(fā)展
 */
public class TestLambda1 {
    //3.靜態(tài)內(nèi)部類(lèi)
    static class Like2 implements ILike{
        @Override
        public void lambda() {
            System.out.println("i like lambda2");
        }
    }
 
    public static void main(String[] args) {
        ILike like=new Like();
        like.lambda();
 
        like=new Like2();
        like.lambda();
 
        //4.局部?jī)?nèi)部類(lèi)
       class Like3 implements ILike{
            @Override
            public void lambda() {
                System.out.println("i like lambda3");
            }
        }
        like=new Like3();
        like.lambda();
 
        //5.匿名內(nèi)部類(lèi)
        like=new ILike() {
            @Override
            public void lambda() {
                System.out.println("i like lambda4");
            }
        };
        like.lambda();
 
        //6.用lambda簡(jiǎn)化
        like=()->{
            System.out.println("i like lambda5");
        };
        like.lambda();
    }
}
 
//1.定義一個(gè)函數(shù)式接口
interface ILike{
    void lambda();
}
 
//2.實(shí)現(xiàn)類(lèi)
class Like implements ILike{
 
    @Override
    public void lambda() {
        System.out.println("i like lambda");
    }
}

Lambda表達(dá)式及語(yǔ)法

Lambda 允許把函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 1. 不需要參數(shù),返回值為 5 
() -> 5
  
// 2. 接收一個(gè)參數(shù)(數(shù)字類(lèi)型),返回其2倍的值 
x -> 2 * x 
  
// 3. 接受2個(gè)參數(shù)(數(shù)字),并返回他們的差值 
(x, y) -> x – y 
  
// 4. 接收2個(gè)int型整數(shù),返回他們的和 
(int x, int y) -> x + y 
  
// 5. 接受一個(gè) string 對(duì)象,并在控制臺(tái)打印,不返回任何值(看起來(lái)像是返回void) 
(String s) -> System.out.print(s)

也就是說(shuō),不需要事先聲明參數(shù)的類(lèi)型,圓括號(hào)可以沒(méi)有,大括號(hào)可以沒(méi)有,返回值可以沒(méi)有

一起來(lái)看看具體的使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class java8_Lambda_Test {
    public static final void main(String[] args) {
 
        Operator addOper = (a, b) -> a + b;
        Operator reduceOper = (a, b) -> a - b;
        Operator multiplyOper = (a, b) -> a * b;
        Operator DivideOper = (a, b) -> a / b;
 
        java8_Lambda_Test test = new java8_Lambda_Test();
        System.out.println(test.getResult(3, 3, addOper));//6
        System.out.println(test.getResult(3, 3, reduceOper));//0
        System.out.println(test.getResult(3, 3, multiplyOper));//9
        System.out.println(test.getResult(3, 3, DivideOper));//1
    }
 
    public int getResult(int a, int b, Operator operator) {
        return operator.convert(a, b);
    }
 
    public interface Operator {
        int convert(int a, int b);
        default int get(int a) {
            return a;
        }
    }
}

你需要注意什么

1.lambda 表達(dá)式只能引用標(biāo)記了 final 的外層局部變量
2.可以直接在 lambda 表達(dá)式中訪問(wèn)外層的局部變量

Lambda的實(shí)際運(yùn)用

1.對(duì)集合排序

問(wèn)題描述:在一個(gè)存放了Student對(duì)象的list中,按年齡進(jìn)行排序,輸出排序后的list

Student類(lèi)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Student implements Comparable<Student>{
    private String name;
    private int age;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    @Override
    public int compareTo(Student student2) {
       int result =this.age - student2.age;
       return result;
    }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
List<Student> list=new ArrayList<>();
Student s1=new Student();
s1.setName("張三");
s1.setAge(28);
list.add(s1);
Student s=new Student();
s.setName("李四");
s.setAge(22);
list.add(s);
sortUsingJava8(list);
 
list.forEach((student) -> System.out.println(student.getName() + ":"+student.getAge()));
?
1
2
3
4
// 使用 java 8 排序
   static void sortUsingJava8(List<Student> list){
       Collections.sort(list, (student1, student2) -> student1.compareTo(student2));
   }

來(lái)康康使用Java7進(jìn)行排序是這樣的:

?
1
2
3
4
5
6
7
8
9
// 使用 java 7 排序
private void sortUsingJava7(List<String> list){
    Collections.sort(list, new Comparator<String>() {
       @Override
       public int compare(String s1, String s2) {
            return s1.compareTo(s2);
        }
    });
}

2.遍歷集合

?
1
2
3
4
5
6
7
8
9
10
11
12
//先準(zhǔn)備一個(gè)集合
        List<Student> list=new ArrayList<>();
        Student s1=new Student();
        s1.setName("張三");
        s1.setAge(28);
        list.add(s1);
        Student s=new Student();
        s.setName("李四");
        s.setAge(22);
        list.add(s);
//使用 lambda 表達(dá)式以及函數(shù)操作(functional operation)
  list.forEach((student) -> System.out.println(student.getName() + ":"+student.getAge()));

3.遍歷集合(帶條件)

?
1
2
3
4
5
//帶條件 打印年齡大于等于20的學(xué)生的姓名
       list.forEach((student)->{
           if (student.getAge()>=20)
               System.out.println(student.getName());
               });

4.代替 Runnable,開(kāi)啟一個(gè)線程

?
1
2
3
4
5
6
7
8
Runnable r = new Runnable() {
    @Override
    public void run() {
        //to do something
    }
};
Thread t = new Thread(r);
t.start();

現(xiàn)在這樣寫(xiě):

?
1
2
3
4
5
Runnable r = () -> {
    //to do something
};
Thread t = new Thread(r);
t.start();

你還可以這樣寫(xiě):

?
1
2
3
4
5
6
7
8
Thread t = new Thread(() -> {
    //to do something
    // such as for
    for(int i = 0; i < 100; i++){
        System.out.println(i);
           }
});
t.start;

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

原文鏈接:https://blog.csdn.net/sxh06/article/details/120126810

延伸 · 閱讀

精彩推薦
  • Java教程Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒(méi)有升過(guò)級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來(lái)介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開(kāi)發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
主站蜘蛛池模板: 在线观看一区 | 久久综合久久综合久久 | 日本中文一区二区 | 久久久久久久国产 | 国产精品入口在线观看 | 91久久精品国产91久久 | 在线观看av网站永久 | 欧美日韩成人网 | 欧美精品一区二区三区蜜桃视频 | 欧美淫片 | 欧美日韩免费视频 | 中文字幕在线影院 | 精品粉嫩超白一线天av | 久久久久久免费精品 | 在线国产小视频 | 黄色网页在线观看 | 国内外精品一区二区三区 | 天天干天天草 | 国产成人黄色网址 | 亚洲欧美激情精品一区二区 | 久久久精品日本 | 国产精品一码二码三码在线 | 日韩中文字幕一区二区 | 亚洲精品一区二区三区在线 | 欧美国产一区二区 | 综合色爱 | 国产乱码精品一区二区三区五月婷 | 亚洲一区二区三区四区五区午夜 | 亚洲精品乱码 | 中文字幕一区在线 | 国产精品美女久久久久久久久久久 | 九色在线观看 | 久久久久久久久久久福利观看 | 一级毛片一级毛片一级毛片 | 亚洲片国产一区一级在线观看 | 日韩高清不卡一区二区三区 | 极品国产粉嫩av免费观看 | 欧美电影在线观看 | 免费观看在线毛片 | 日日干夜夜干 | 亚洲一区二区在线播放 |