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

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

Vavr中的java.util.Collection的惰性視圖

Vavr中的java.util.Collection的惰性視圖

翻閱古今 2021-04-02 10:15:36
我有一個java.util.Collection返回值時使用的現有api 。我想在Vavr的程序的后面部分中使用這些值,但是我不想使用像這樣的急切方法List.ofAll(因為我不想Collection兩次遍歷那些對象)。我的用例是這樣的:List<Product> filter(java.util.Collection products) {    return List.lazyOf(products).filter(pred1);}是否可以?
查看完整描述

2 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

由于該方法的輸入集合是java Collection,因此您不能依賴于不變性,因此您需要立即處理集合中包含的值。您不能將其推遲到以后的某個時間點,因為不能保證所傳遞的集合保持不變。


您可以List通過對傳遞的集合的迭代進行過濾,然后將結果收集到中,來最大程度地減少構建的vavr的數量List。


import io.vavr.collection.Iterator;

import io.vavr.collection.List;

...


List<Product> filter(Collection<Product> products) {

    return Iterator.ofAll(products)

        .filter(pred1)

        .collect(List.collector());

}


查看完整回答
反對 回復 2021-04-21
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

vavr中有一個惰性類。您可能要使用它。

Lazy<Option<Integer>> val1 = Lazy.of(() -> 1).filter(i -> false);


查看完整回答
反對 回復 2021-04-21
  • 2 回答
  • 0 關注
  • 227 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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