閱讀前註意 本文所有代碼貼出來的目的是幫助大家理解,並非是要引導大家跟寫,許多環境問題文件問題沒有詳細說明,代碼也並不全面,達不到跟做的效果。建議直接閱讀全文即可,我在最後會給出詳細代碼地址,對源代碼細節更感興趣的同學可以下載參考。 性能測試:使用日誌 在c++中進行性能測試是令人頭疼的問題,我們往 ...
轉自:
http://www.java265.com/JavaCourse/202206/3754.html
下文是筆者編寫的一篇關於Lambda表達式入門的文章,當你閱讀完這篇文章後,你就可以進入Lambda的大門了,如下所示
Lambda簡介
Lambda表達式: 是JDK8開始後的一種新語法形式 Lambda的功能: 簡化匿名內部類寫法 Lambda語法格式 (匿名內部類被重寫方法的形參列表)->{ 被重寫方法的方法體代碼 } 註:->是語法形式,無實際意義 註意事項:Lambda只能簡化函數式編程介面的匿名內部類的寫法
例:
@FunctionalInterface//加上這個註解必須是函數式介面,且只有一個抽象方法 interface User{ void run(); } //簡化之前的匿名內部類 User p = new User(){ @Override public void run(){ System.out.println("我是java265.com"); } }; //簡化之後 User p = () -> { System.out.println("我是java265.com"); }; 另:也可以將其作為參數代入方法中去使用: //在原來的基礎上定義一個test方法 public static void test(User p){ System.out.println("ttttttttt") p.run(); } //不使用Lambda的情況下: test(p);//需要在定義匿名內部類之後,將p代入; //使用Lambda的情況: User p = () -> { System.out.println("我是java265.com"); }; test(() -> { System.out.println("我是java265.com"); }); //由於等號右邊即是User創建的對象p,因此可以可以直接將其代入
Lambda優點: Lambda是一個匿名函數 可將Lambda表達式理解為是一段可以傳遞的代碼
Lambda優點
//Lambda應用之前: Arrays.sort(users,new Comparator<Integer>(){ @Override public int compare(Integer o1,Integer o2){ return o2 -o1; } }); //Lambda應用之後: Arrays.sort(users,(Integer o1,Integer o2) -> { return o2 -o1; });
Lambda表達式省略原則
Arrays.sort(users,(Integer o1,Integer o2) -> { return o2 -o1; }); //省略參數類型之後 Arrays.sort(users,( o1, o2){ return o2 -o1; }); 當只有一個參數,參數類型可以省略,同時()也可以省略 //簡單引用一個單個參數的例子,不需要瞭解其具體含義 btn.addActionListener((ActionEvent e) -> { System.out.println("示例分享"); }); //簡化之後: btn.addActionListener( e -> { System.out.println("示例分享"); }); 當Lambda表達式的方法體代碼只有一行代碼。可以省略大括弧不寫,同時要省略分號 //參照上一條規則的例子 btn.addActionListener( e -> { System.out.println("示例分享"); }); //簡化之後: btn.addActionListener( e -> System.out.println("示例分享") ); 當Lambda表達式的方法體代碼只有一行代碼。可以省略大括弧不寫 當這行代碼是return語句,必須省略return不寫,同時也必須省略";"不寫 //參照第一條規則的代碼 Arrays.sort(users,(Integer o1,Integer o2) -> { return o2 -o1; }); //簡化之後: Arrays.sort(users,( o1, o2)-> o2 -o1);