您好,登錄后才能下訂單哦!
表達式本質上是一個匿名方法。讓我們來看下面這個例子:
public int add(int x, int y) { return x + y; }
轉成λ表達式后是這個樣子:
(int x, int y) -> x + y;
參數類型也可以省略,Java編譯器會根據上下文推斷出來:
(x, y) -> x + y; //返回兩數之和
或者
(x, y) -> { return x + y; } //顯式指明返回值
可見λ表達式有三部分組成:參數列表,箭頭(->),以及一個表達式或語句塊。
下面這個例子里的λ表達式沒有參數,也沒有返回值(相當于一個方法接受0個參數,返回void,其實就是Runnable里run方法的一個實現):
() -> { System.out.println("Hello Lambda!"); }
如果只有一個參數且可以被Java推斷出類型,那么參數列表的括號也可以省略:
c -> { return c.size(); } public static void main(String[] args) { Arrays.asList( "a", "b", "d" ).forEach( e -> { System.out.print( e +"\n"); } ); System.out.print( "\n--------------------------" ); Arrays.asList( "a", "b", "d" ).sort( ( e1, e2 ) -> e1.compareTo( e2 ) ); /** * 可見λ表達式有三部分組成:參數列表,箭頭(->),以及一個表達式或語句塊。 * 下面這個例子里的λ表達式沒有參數,也沒有返回值(相當于一個方法接受0個參數,返回void,其實就是Runnable里run方法的一個實現): * () -> { System.out.println("Hello Lambda!"); } */ Thread t2=new Thread(()->{ System.out.println("This is from an anonymous method (lambda exp).\n"); }); t2.start(); /** * 迭代LIST */ List<String> listStr=new ArrayList<>(); listStr.add("sss"); listStr.add("1111"); listStr.forEach(e->{ if(e.equals("sss")){ System.out.print(e); } }); }
以上所述是小編給大家介紹的Java 8 lambda初試,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。