1. 程式人生 > 其它 >數學建模-灰色關聯分析

數學建模-灰色關聯分析

Lambda表示式

Java8引入函數語言程式設計風格,可以理解為一種匿名函式的替代,通過行為引數化傳遞程式碼

形式

(parameters)-> expression
(parameters)->{ statement;}
// 例子
() -> System.out.print(1);
name->System.out.print(name);
() -> {
    System.out.print(1);
    System.out.print(2);
}
(x,y)->x + y;
(Long x,Long y)-> x + y;

函式式介面

  • 介面中(必須)只有一個抽象方法
  • Java8函式式介面註解@FunctionInterface (只是幫助編譯器校驗介面中是否只有一個抽象方法。不一定要有)
  • 函式式介面的抽象方法的簽名基本上就是Lambda表示式的簽名,我們將這種抽象方法稱之為函式描述符

常用函式式介面

介面 引數 返回型別 描述
Predicate T boolean 用來判別一個物件
Consumer T void 接收一個物件處理不返回值
Function<T,R> T R 接收一個物件返回一個物件
Supplier none T 提供一個物件
UnaryOperator T T 接收一個物件返回相同物件
BiFunction<T, U, R> (T,U) R 接收2個物件返回一個物件
BinaryOperator (T,T) T 接收2個相同物件返回相同物件

還有一些基礎型別的函式式介面 如IntFunction。。好處是不用裝箱拆箱,效能較好

方法引用

方法引用是呼叫特定方法的 Lambda 表示式的一種快速寫法,可以讓你重複使用現有方法定義,並像Lambda 表示式一樣傳遞

// 指向靜態方法的方法引用
(args) -> ClassName.staticMethod(args);
ClassName::staticMethod;

Consumer<String> a = (String s) -> Integer.parseInt(s);
Consumer<String> b = Integer::parseInt;

// 指向任意例項方法的方法引用
(args) -> args.instanceMethod();
ClassName::instanceMethod;

Consumer<String> c = (String s) -> s.length();
Consumer<String> d = String::length;

// 指向現有物件的例項方法引用
(args) -> object.instanceMethod(args);
object::instanceMethod;

StringBuilder stringBuilder = new StringBuilder();
Consumer<String> e = (String s) -> stringBuilder.append(s);
Consumer<String> f = stringBuilder::append;