jdk8新特性-Lambda 表達式

摘要

Lambda 允許把函數作爲一個方法的參數(函數作爲參數傳遞進方法中)。可以取代大部分的匿名內部類,寫出更優雅的 Java 代碼,尤其在集合的遍歷和其他集合操作中,可以極大地優化代碼結構。

基礎語法

(parameters) -> expression
(parameter1,parameter2) ->{ statements; }

1.無參無返回值

//無參無返回

/**無參無返回值*/
@FunctionalInterface
public interface NoReturnNoParamMethod {
	void operate();
}
NoReturnNoParamMethod noReturnNoParamMethod = () -> {
    System.out.println("無參無返回");
};
noReturnNoParamMethod.operate();

2.一個參數無返回值

/**一個參數無返回*/
@FunctionalInterface
public interface NoReturnOneParamMethod {
    void operate(int a);
}
//一個參數無返回
NoReturnOneParamMethod noReturnOneParamMethod = a-> {
    System.out.println("一個參數無返回 param:" + a);
};
noReturnOneParamMethod.operate(6);

3.多參數無返回值

/**多參數無返回*/
@FunctionalInterface
public interface NoReturnMultiParamMethod {
    void operate(int a, int b);
}
//多個參數無返回
NoReturnMultiParamMethod noReturnMultiParamMethod = (a, b) -> {
    System.out.println("多個參數無返回 param:" + "{" + a +"," + + b +"}");
};
noReturnMultiParamMethod.operate(6, 8);

4.無參有返回值

/*** 無參有返回*/
@FunctionalInterface
public interface ReturnNoParamMethod {
    int operate();
}
//無參有返回值
ReturnNoParamMethod returnNoParamMethod = () -> {
    System.out.print("無參有返回值");
    return 1;
};
int res = returnNoParamMethod.operate();
System.out.println("return:" + res);

5.一個參數有返回值

/**一個參數有返回值*/
@FunctionalInterface
public interface ReturnOneParamMethod {
    int operate(int a);
}
//一個參數有返回值
ReturnOneParamMethod returnOneParamMethod = a -> {
    System.out.println("一個參數有返回值 param:" + a);
    return 1;
};
int res2 = returnOneParamMethod.operate(6);
System.out.println("return:" + res2);

6.多個參數有返回值

/**多個參數有返回值*/
@FunctionalInterface
public interface ReturnMultiParamMethod {
    int operate(int a, int b);
}
//多個參數有返回值
ReturnMultiParamMethod returnMultiParamMethod = (a, b) -> {
    System.out.println("多個參數有返回值 param:" + "{" + a + "," + b +"}");
    return 1;
};
int res3 = returnMultiParamMethod.operate(6, 8);
System.out.println("return:" + res3);

引用方法

方法歸屬者::方法名 靜態方法的歸屬者爲類名,普通方法歸屬者爲對象

public static void main(String args[]){
    List<String> names = new ArrayList();
    names.add("小楊");
    names.add("小張");
    names.add("小紅");
    names.add("小王");
    names.forEach(System.out::println);
}

輸出

小楊
小張
小紅
小王

發佈了36 篇原創文章 · 獲贊 28 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章