JDK1 8的新特性

2021-10-01 10:22:34 字數 2968 閱讀 1313

jdk1.8之前的介面不可以有方法體,但從jdk1.8開始,介面中的方法可以帶有方法體
為什麼要新增這個特性?
介面就是為了定義乙個標準,這個標準要求所有的實現類實現這些抽象方法。

但存在某些方法,所有的實現類**都是一樣的,索性就把這些**挪到介面中。

使用的方法?
通過default來修飾這個方法
public

inte***ce

ianimal

}

實現類可以不必實現這個方法
public

class

person

implements

ianimal

}

測試
public

class

test

}

測試效果如圖:

lambda效果與匿名函式的效果類似
先決條件
目標方法的引數是乙個介面

介面中只有乙個抽象方法,且這個抽象方法不是object裡面的方法

介面最好頂乙個註解:@functionalinte***ce

使用方法
(方法的形參) -> 

如果目標方法只有乙個引數,可以省略小括號

小括號裡面的形參:型別可以省略

如果方法體只有一行,大括號可以省略

實戰**
thread t =

介面名抽象方法

含義consumer< t >

void accept(t t)

消費者,無返回值

supplier< t >

t get();

**商,它是把資料,直接返回了

function

t:輸入型別,r:輸出型別,將傳入的資料轉變成輸出的結果

predicate< t >

boolean test(t t);

斷言:泛型是輸入資料的型別;過濾:如果返回值是true,則在容器中保留,否則刪除

分類

方法的返回值還是stream:(transformaction運算元)

方法的返回值不是stream:(action運算元)

介紹
資料流程式設計的處理就像是像一根帶閥門的管子裡注水,每次處理就是一道閥門,水流就是資料,

只有乙個資料處理完成之後,才會處理另乙份資料

運算元介紹

transformaction運算元

1.stream filterstream = soustream.filter( (t) -> t > 50);

過濾資料,只保留值大於50的資料

2:stream mapstream = soustream.map( (t) -> t + 「」);

把輸入引數,經過乙個方法變成另外乙個引數

3: stream flatmapstream = soustream.flatmap( t -

);把輸入引數,經過乙個方法變成另外乙個引數(stream型別)

4:stream stream = soustream.distinct()

去重5:stream stream = soustream.limit(2);

取前幾條資料

6:stream stream = soustream.skip(2);

跳過前幾條資料

7:stream stream = soustream.sorted();

排序(公升序)

action運算元

1:stream.foreach( t -> system.out.println(t));

迴圈2:object arrays = stream.toarray()

將資料轉為陣列

3:long count = stream.count()

統計數量

4:optional findfirst = stream.findfirst()

查詢第乙個元素

5:iterator iterator = stream.iterator()

轉換成迭代器

6:optional maxoption = stream.max( (t1,t2) -> t1 - t2)

最大值,排序後獲取最後乙個

7::optional minoption = stream.min( (t1,t2) -> t1 - t2)

最小值,排序後獲取第乙個

8:optional reduce = stream.reduce((t1, t2) -> t1 + t2);

縮減資料,將第乙個資料,第二個資料作為第乙個引數,第二個引數傳進去進行處理,得到乙個資料,將這個資料作為第乙個引數,第三個資料作為 第二個引數傳入進行第二次處理,以此類推

JDK1 8新特性簡介

可以用static default來定義介面方法 用default來定義普通方法,這樣子類就不用強制覆寫這個方法了。用static來定義靜態方法 專給lanmda使用的介面加上annotation functionalinte ce 其中只能有乙個方法 使用 引數 程式執行語句 引數 簡單返回 引數...

JDK1 8 新特性(全)

hashmap資料結構 在jdk1.8中對hashmap等map集合的資料結構優化。hashmap資料結構的優化 知識點 1 原來的hashmap採用的資料結構是雜湊表 陣列 鍊錶 hashmap預設大小是16,乙個0 15索引的陣列,2 如何往裡面儲存元素 首先呼叫元素的hashcode 方法,計...

JDK1 8新特性 方法引用

方法引用是對lamdba的一種優化,因此,能用方法引用的地方,一定能用lamdba表示式。使用lamdba表示式,方法的引數必須是函式式介面,所以使用方法引用也要有乙個函式式介面。前提 物件已經存在,方法已經存在,就能使用了 前提 物件是已經存在的,成員方法也是已經存在的 定義乙個函式式介面 fun...