[OCPJP]Functional Interface的預設方法與集合的串流操作


Given the code fragments:

and

What is the result?

A.

2

B.

3

C. A compilation error occurs at line n1.
D. A compilation error occurs at line n2.

題解

CourseFilter介面繼承了Predicate介面,並使用Java 8之後新出的預設方法功能來實作Predicate介面的test方法,判斷傳入test方法的參數是否為「Java」字串。

程式第16行,使用Java 8之後新出的Lambda語法來快速實作出Predicate介面的test方法,判斷傳入test方法的參數所參考的字串物件的長度是否大於3。有關Lambda語法的介紹可以參考這篇文章:

https://magiclen.org/java-8-lambda/

程式第17行,使用匿名類別實作CourseFilter介面,再次覆寫已經在CourseFilter介面中用預設方法實作過的test方法,判斷傳入test方法的參數是否包含「Java」子字串。

程式第22行,將集合轉為串流。

程式第23行,保留長度大於3的字串物件,其餘的丟棄。在此所有元素都會被保留。

程式第24行,保留集合中的包含「Java」子字串的字串,其餘的丟棄。在此所有元素都會被保留。

程式第25行,計算集合的元素數量。此時元素數量為3。

程式第26行,輸出集合的元素數量「3」。

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章