java8 Lambda表達式整理

Lambda表達式

lambda是將一個函數做爲一個參數進行傳遞。java

語法

(parameters) -> expressionexpress

(parameters) ->{ statements; }app

前面是參數,後面是方法的執行體,只有一行代碼能夠省略花括號,只有一個參數也能夠省略參數的括號。函數

使用範圍spa

只有一個抽象方法的接口中的方法均可以使用lambda表達式進行編寫code

java8提供的接口對象

java8內置提供了4個用於lambda的接口接口

  • predicate接口get

    • 斷言接口,接受一個參數返回一個boolean類型的值,用於判斷的時候使用,好比compareio

    • boolean test(T t);
  • consumer接口

    • 消費者接口,接受一個參數不返回值,對參數進行處理,打印之類的操做

    • void accept(T t);
  • function<T,R>接口

    • 方法處理接口,接受一個任意類型的參數,返回自定義類型的參數

    • R apply(T t);
  • supplier接口

    • 生產者接口,不接受參數,返回任意類型的值

    • T get();

方法引用

  • 構造方法的引用:HashMap::new==()->new String()

  • 特定對象的方法引用x::toString==()->x.toString()

    • public void example() {
          String x = "hello";
          function(x::toString);
      }
  • 任意對象的實例方法引用

    • String::toString==(s) -> s.toString()
  • 靜態方法引用

    • String::valueOf==`(s) -> String.valueOf(s)
相關文章
相關標籤/搜索