函數式編程思想Lambda表達式

面向對象的編程思想:

做一件事,找一個能解決這件事的對象,調用對象的方法完成事情

函數式編程思想:

只要能獲得結果,誰去做怎麼去做都不重要。只重視結果不重視過程

Lambda的使用前提:

1.使用Lambda必須具有接口,且要求接口中有且僅有一個抽象方法

    無論是JDK內置的Runnable、Comparator接口還是自定義接口,只有當接口中的抽象方法存在且唯一時,纔可以使用Lambda。

2.使用Lambda必須具有上下文推斷

   也就是方法的參數或局部變量類型必須爲Lambda對應的接口類型,才能使用Lambda作爲該接口的實例

注意:有且僅有一個抽象方法接口稱爲函數式接口

具體實例:

//使用匿名內部類的方式實現多線程
        new Thread(
                new Runnable(){
                    @Override
                    public void run() {
                      System.out.println(Thread.currentThread().getName()+"新的線程已創建");
                    }
                }
        ).start();
//使用Lambda的方式實現多線程
        new Thread(()->{
            System.out.println(Thread.currentThread().getName()+"新的線程已創建");
        }).start();

  <!-----------------------------------------------------------------我是一條分界線---------------------------------------------------------!>

通過數組Arrays.sort對數組進行排序:

Person類:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = 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;
    }
}

主程序:

import java.util.Arrays;
import java.util.Comparator;

public class LambdaArrays {

    public static void main(String[] args) {
        Person arr[]={
          new Person("迪麗熱巴",18),
          new Person("古力娜扎",21),
          new Person("馬爾扎哈",20)
        };

        //傳統方式
        Arrays.sort(arr, new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                return o1.getAge()-o2.getAge();
            }
        });
        for ( Person p :arr) {
            System.out.println(p.getName()+p.getAge());
        }
        //Lambda表達式
        Arrays.sort(arr,(Person p1,Person p2)->{
            return p1.getAge()-p2.getAge();
        });
        for ( Person p :arr) {
            System.out.println(p.getName()+p.getAge());
        }
    }
}

運行結果:

結果一樣;

注意Arrays.sort排序的基本原理見另一篇筆記!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章