lambda表达式
lambda 特殊的匿名内部类,语法更简洁。允许把函数作为一个方法的参数进行传递。
基本语法 <函数式接口><变量名>=(参数1,参数2..)->{方法体}
形参列表的数据类型会自动推断;如果形参列表为空,只需保留();如果形参只有一个,()可以省略,只需要参数的名称即可;如果执行语句只有一句且无返回值,可以省略{},若有返回值想省去{},需同时省略return,且执行语句也保证只有一句。
lambda不会生成一个单独的内部类文件(匿名内部类会生成)。
方法引用
函数式接口参数类型返回类型说明
Consumer<T>消费型接口Tvoidvoid accept(T t);对类型为T的对象应用操作
Supplier<T>供给行接口无TT get();返回类型为T的对象
Function<T,R>函数型接口TRR apply(T,t);对类型为T的对象应用操作,并返回类型为R类型的对象
Predcate<T>断言型接口Tbooleanboolean test(T,t);确定类型为T的对象是否满足条件,并返回boolean类型。
@FunctionalInterface函数式接口-(一个接口只有一个抽象方法)
函数式接口才可以使用Lambda表达式,lambda表达式会被匹配到这个抽象方法上。
Stream-流中保存对集合或数组数据的操作。和集合类似,但集合中保存的时候数据。
Stream自身不会存储元素
不会改变源对象。相反,他们会返回一个持有结果的新的stream
stream的操作是延迟执行的。意味着他们会等需要结果的时候才执行
新时间API(DateTimeFormatter线程安全)
之前的时间API存在问题:线程安全问题(SimpleDateFormat线程不安全)丶设计混乱
本地化日期时间 API
LocalDate
LocalTime
LocalDateTime
Instant:时间戳 (1970-now 的毫秒数)
ZoneId:时区
Date,Instant, LocalDateTime的转换
Date->Instant->LocalDateTime date.toInstant(); LocalDateTime.ofInstant
LocalDateTime->Instant->Date
localDateTime.atZone(ZoneId.systemDefault()).toInstant
Date.from()
DateTimeFormatter:格式化类