[OCPJP]串流的findFirst和ifPresent方法


Given the code fragment:

What is the result?

A.

0 : 0 : pen

B.

0 : 1 : pen

C.

0 : 0 : 0 : 0 : 0 : pen

D.

0 : 1 : 2 : 3 : 4 :

E. A compilation error occurs.

題解

程式第18行的filter方法只會保留包含「pen」子字串的字串元素。第14行的「i++」可以直接看成0,因為i是區域變數,所以每次取值都會是0。程式第19行使用了findFirst方法,會使得第18行的filter方法找到第一個符合「保留包含『pen』子字串的字串元素」後,就直接回傳結果。因此程式會找到索引1的「pen」,然後將「pen」字串物件包成Optional後回傳,此時程式輸出「0 : 0 :」。第19行的ifPresent方法,因為Optional物件中有「pen」字串的存在,因此會執行標準輸出串流物件的print方法,輸出「pen」。

關於作者

Magic Len

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

相關文章