lambda表達式
lambda 特殊的匿名內(nèi)部類,語法更簡潔拱礁。允許把函數(shù)作為一個方法的參數(shù)進行傳遞揍移。
基本語法 <函數(shù)式接口><變量名>=(參數(shù)1,參數(shù)2..)->{方法體}
形參列表的數(shù)據(jù)類型會自動推斷一姿;如果形參列表為空,只需保留();如果形參只有一個跃惫,()可以省略叮叹,只需要參數(shù)的名稱即可;如果執(zhí)行語句只有一句且無返回值爆存,可以省略{}蛉顽,若有返回值想省去{},需同時省略return先较,且執(zhí)行語句也保證只有一句携冤。
lambda不會生成一個單獨的內(nèi)部類文件(匿名內(nèi)部類會生成)。
方法引用
函數(shù)式接口參數(shù)類型返回類型說明
Consumer<T>消費型接口Tvoidvoid accept(T t);對類型為T的對象應用操作
Supplier<T>供給行接口無TT get();返回類型為T的對象
Function<T,R>函數(shù)型接口TRR apply(T,t);對類型為T的對象應用操作拇泣,并返回類型為R類型的對象
Predcate<T>斷言型接口Tbooleanboolean test(T,t);確定類型為T的對象是否滿足條件噪叙,并返回boolean類型。
@FunctionalInterface函數(shù)式接口-(一個接口只有一個抽象方法)
函數(shù)式接口才可以使用Lambda表達式霉翔,lambda表達式會被匹配到這個抽象方法上。
Stream-流中保存對集合或數(shù)組數(shù)據(jù)的操作苞笨。和集合類似债朵,但集合中保存的時候數(shù)據(jù)。
Stream自身不會存儲元素
不會改變源對象瀑凝。相反序芦,他們會返回一個持有結(jié)果的新的stream
stream的操作是延遲執(zhí)行的。意味著他們會等需要結(jié)果的時候才執(zhí)行
新時間API(DateTimeFormatter線程安全)
之前的時間API存在問題:線程安全問題(SimpleDateFormat線程不安全)丶設(shè)計混亂
本地化日期時間 API
LocalDate
LocalTime
LocalDateTime?
Instant:時間戳 (1970-now 的毫秒數(shù))
ZoneId:時區(qū)
Date粤咪,Instant, LocalDateTime的轉(zhuǎn)換
Date->Instant->LocalDateTime? date.toInstant();? LocalDateTime.ofInstant
LocalDateTime->Instant->Date?
localDateTime.atZone(ZoneId.systemDefault()).toInstant
Date.from()
DateTimeFormatter:格式化類