Lambda 表達(dá)式

實例

  1. 使用 Lambda 表達(dá)式對列表進(jìn)行迭代

    // Java 8之前:
    List features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API");
    for (String feature : features) {
        System.out.println(feature);
    }
    
    // Java 8之后:
    List features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API");
    features.forEach(n -> System.out.println(n));
    
    // 使用Java 8的方法引用更方便,方法引用由::雙冒號操作符標(biāo)示,
    // 看起來像C++的作用域解析運(yùn)算符
    features.forEach(System.out::println);
    
  2. lambdas 實現(xiàn) Runnable 接口

    // 1.1使用匿名內(nèi)部類  
    new Thread(new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Hello world !");  
        }  
    }).start();  
    
    // 1.2使用 lambda expression  
    new Thread(() -> System.out.println("Hello world !")).start();  
    
    // 2.1使用匿名內(nèi)部類  
    Runnable race1 = new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Hello world !");  
        }  
    };  
    
    // 2.2使用 lambda expression  
    Runnable race2 = () -> System.out.println("Hello world !");  
    
    // 直接調(diào)用 run 方法(沒開新線程哦!)  
    race1.run();  
    race2.run();  
    
  3. 使用 Lambda 表達(dá)式進(jìn)行事件處理

    // Java 8之前:
    JButton show =  new JButton("Show");
    show.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Event handling without lambda expression is boring");
        }
    });
    
    // Java 8方式:
    show.addActionListener((e) -> {
        System.out.println("Light, Camera, Action !! Lambda expressions Rocks");
    });
    
  4. 使用 Lambdas 排序集合

    String[] players = {"Rafael Nadal", "Novak Djokovic",   
        "Stanislas Wawrinka", "David Ferrer",  
        "Roger Federer", "Andy Murray",  
        "Tomas Berdych", "Juan Martin Del Potro",  
        "Richard Gasquet", "John Isner"};  
    
    // 1.1 使用匿名內(nèi)部類根據(jù) surname 排序 players  
    Arrays.sort(players, new Comparator<String>() {  
        @Override  
        public int compare(String s1, String s2) {  
            return (s1.substring(s1.indexOf(" ")).compareTo(s2.substring(s2.indexOf(" "))));  
        }  
    });  
    
    // 1.2 使用 lambda expression 排序,根據(jù) surname  
    Comparator<String> sortBySurname = (String s1, String s2) ->   
        ( s1.substring(s1.indexOf(" ")).compareTo( s2.substring(s2.indexOf(" ")) ) );  
    Arrays.sort(players, sortBySurname);  
    
    // 1.3 或者這樣,懷疑原作者是不是想錯了,括號好多...  
    Arrays.sort(players, (String s1, String s2) ->   
        ( s1.substring(s1.indexOf(" ")).compareTo( s2.substring(s2.indexOf(" ")) ) )   
        );  
    
    // 2.1 使用匿名內(nèi)部類根據(jù) name lenght 排序 players  
    Arrays.sort(players, new Comparator<String>() {  
        @Override  
        public int compare(String s1, String s2) {  
            return (s1.length() - s2.length());  
        }  
    });  
    
    // 2.2 使用 lambda expression 排序,根據(jù) name lenght  
    Comparator<String> sortByNameLenght = (String s1, String s2) -> (s1.length() - s2.length());  
    Arrays.sort(players, sortByNameLenght);  
    
    // 2.3 or this  
    Arrays.sort(players, (String s1, String s2) -> (s1.length() - s2.length()));  
    
    // 3.1 使用匿名內(nèi)部類排序 players, 根據(jù)最后一個字母  
    Arrays.sort(players, new Comparator<String>() {  
        @Override  
        public int compare(String s1, String s2) {  
            return (s1.charAt(s1.length() - 1) - s2.charAt(s2.length() - 1));  
        }  
    });  
    
    // 3.2 使用 lambda expression 排序,根據(jù)最后一個字母  
    Comparator<String> sortByLastLetter =   
        (String s1, String s2) ->   
            (s1.charAt(s1.length() - 1) - s2.charAt(s2.length() - 1));  
    Arrays.sort(players, sortByLastLetter);  
    
    // 3.3 or this  
    Arrays.sort(players, (String s1, String s2) -> (s1.charAt(s1.length() - 1) - s2.charAt(s2.length() - 1)));
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容