亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Stream的SKIP方法可以使無限流有限嗎?

Stream的SKIP方法可以使無限流有限嗎?

蕭十郎 2022-08-17 17:22:03
“和方法使一個更小。他們可以使有限流變小,或者他們可以從無限流中制造有限流。方法簽名如下所示:limit()skip()StreamStream<T> limit(int maxSize) Stream<T> skip(int n)以下代碼 c....”以上摘自OCP java 8書。當它說“可以從無限流中產生有限流”時,他們是同時還是單獨使用這兩種方法?我可以想象如何使無限流變小,但如何單獨實現這一目標?有沒有辦法或文檔中的措辭需要更清晰?limit()skip()
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

“可以從無限流中產生有限流”肯定僅適用于,而不適用于 .limit()skip()

skip就像從海洋中取出一杯水,然后想知道“海洋中還剩下多少水?”,而這就像從中取出同一杯水,然后想知道“我從海洋中取了多少水?limit

如果流是無限的,那么跳過許多元素仍然會給你留下無限的流......

Stream.iterate(0L, i -> i + 1).skip(100).forEach(System.out::println);

從理論上講,這將永遠運行。因此,很可能只是一個小小的不準確之處,逃脫了這本書的評論者。


查看完整回答
反對 回復 2022-08-17
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

如果您仔細查看Java文檔,您會發現,因為提到它是一個短路操作。這意味著一旦滿足給定的標準,它可能不會對源流的所有元素進行操作,它將退出。因此,這適用于將無限流更改為有限流。limit(long maxSize)

返回由此流的元素組成的流,該流被截斷為長度不超過 maxSize。

這是一種短路狀態的中間操作。

另一方面,該方法沒有提出這樣的要求,因此基本上在跳過n個元素之后,Stream仍然可以是無限的:skip(long n)

在丟棄流的前 n 個元素后,返回由此流的其余元素組成的流。如果此流包含的元素少于 n 個,則將返回一個空流。

這是有狀態的中間操作。

所以你正在讀的書對方法的措辭不正確。skip


查看完整回答
反對 回復 2022-08-17
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號