函式程式設計思想
(1).不使用lambda:需要定義類、建立物件;
(2).使用lambda:不需要定義類,不需要建立物件。
lambda相對於物件導向程式設計的優勢:寫法簡單,可讀性強。
預設規則
1).形參相關:形參的資料型別都可以省略。
2).形參相關:如果形參只有乙個,可以同時省略:資料型別、一對小括號。
注:如果省略小括號,必須同時省略資料型別
如果省略資料型別,可以不省略小括號。
3).方法體相關:如果方法體中只有一句話,可以同時省略:一對大括號、語句後的分號、最後的return關鍵字。
要省就全省,要用就全用
概述::有且只有乙個「自定義」的抽象方法(可以包含同object類中宣告相同的抽象方法),這種介面叫:函式式介面。
函式式介面:consumer介面
demo
class zi implements consumer
}public class demo
});的形式
fun(s -> system.out.println(s.touppercase()));
}public static void fun(consumercon)
}
函式式介面:predicate介面(判斷介面)
demo
class zi implements predicate
}public class demo
});表示式:
fun(n -> n > 10);
}public static void fun(predicatep)
}
常用方法:
獲取方式
1).通過collection集合獲取流:collection介面的:預設方法:stream()獲取流:
2).通過map集合獲取流:
3).通過陣列(引用型別)獲取流:
4).通過陣列(基本型別)獲取流:
5).通過零散資料獲取流:
demo
public static void main(string args) ;
streamintegerstream1 = arrays.stream(integerarray);//方式一
streamintegerstream2 = stream.of(integerarray);//方式二,注意:只能接收引用型別陣列
//4).通過陣列(基本型別)獲取流:
int intarray = ;
intstream intstream1 = arrays.stream(intarray);//方式一:
intstream intstream2 = intstream.of(intarray);//方式二:
//5).通過零散資料獲取流:
streamintegerstream = stream.of(10, 20, 30, 40, 50, 60, 70, 80);
}
綜合案例
public static void main(string args)
將stream中的資料提取到集合或陣列中
public
static
void
main
(string[
] args)
「序列化」:將乙個「記憶體中的物件」的「名字」 ,以及「屬性的值」一起儲存到乙個「檔案」中,這個過程叫:序列化。
「反序列化」:將之前「序列化」的物件,再次的「載入到記憶體,並建立物件」,這個過程叫:反序列化。
Lambda表示式2 函式式介面
只包含乙個抽象方法的介面,成為函式式介面。可以通過lambda表示式來建立該介面的物件。可以在任意函式式介面使用 functionalinte ce註解,可以檢查其是否是乙個函式式介面。functionalinte ce public inte ce test1 作為引數傳遞的lambda表示式 作...
Lambda 表示式 與 函式式介面
lambda 表示式,也可稱為閉包,是乙個匿名函式 語法 parameters 將引數和實現分開 parameters 引數列表。引數型別可省略 只有乙個引數 可省略 引數名稱不允許與外層區域性變數相同。函式的具體實現。只有一行語句 可省略,return不用寫。只能引用標記了 final 的外層區域...
常見函式式介面及其lambda實現樣例
從上面的testbifunction方法可以看到bifunctionbifunction有三個引數,其中兩個是方法的引數型別,乙個是返回值型別.而返回值型別是由接受返回值的變數解決定的.而testbinaryoperator方法繼承了bifunction,只是約束了三個引數型別是一樣的.當兩個實現同...