Java Lambda表達式的使用及案例

1. Lambda表達式的標準格式:
     (1)一些參數
     (2)一個箭頭
     (3)一段代碼
  格式:
      (參數列表)->{一些重寫的代碼};
  解釋說明
     (  ):接口中抽象方法的參數列表,沒有參數就空着,有參數就寫出參數,多個參數使用逗號分隔
     ->:傳遞的意思,將參數列表傳遞給方法體
     {  }:重寫接口的抽象方法體
2. Lambda表達式的省略格式
     凡是可以根據上下文進行推導的都可以省略
     可以省略的內容:
     (1)(參數列表):括號中參數列表的數據類型,可以省略不寫
     (2)(參數列表):括號中的參數如果只有一個,那麼參數類型和()都可以省略
     (3){一些代碼}:如果{}中的代碼只有一行,無論是否有返回值,都可以省略({},return,分號),但是三者必須同時省略
3. Lambda表達式的使用前提
     (1)使用Lambda表達式必須有接口,而且接口中有且僅有一個抽象方法;
             無論是JDK中內置的Runnable、Comparator接口還是自定義接口,只有當接口中的抽象方法存在且唯一時,纔可以使用Lambda表達式。
     (2)使用Lambda表達式必須具有上下文推斷
             方法的參數或局部變量類型必須爲Lambda表達式對應的接口類型,才能使用Lambda表達式作爲該接口的實例。

案例:

    //使用匿名內部類實現線程
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("創建一個新線程");
            }
        }).start();
    }

    //使用Lambda表達式的方式實現線程
    public static void main(String[] args) {
        new Thread(()->{System.out.println("創建一個新線程");}).start();
    }
 public static void main(String[] args) {
        person[] arr={
                new person("aa",30),
                new person("bb",10),
                new person("cc",20)
        };

        //使用匿名方式實現
        /*Arrays.sort(arr,new Comparator<person>(){

            @Override
            public int compare(person o1, person o2) {
                return o1.getAge()-o2.getAge();
            }
        });*/

        //使用Lambda表達式實現
        Arrays.sort(arr,(person o1, person o2)-> {
                return o1.getAge()-o2.getAge();
        });

        for (person person : arr) {
            System.out.println(person);
        }

    }

 

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