为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 240 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号