表達式本質上是一個匿名方法。讓我們來看下面這個例子:
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。