资讯专栏INFORMATION COLUMN

延迟计算

wmui / 1453人阅读

摘要:让程序的计算发生在真正使用到的时候,而不是提前计算好所有数据,因为有些场景下,并不是所有数据都会用到比如棋局游戏,没必要计算所有的步骤构造器的参数传入的是一个方法,但该方法的执行只发生在需要的时候这里只是一个,并不是效率最高的版本

让程序的计算发生在真正使用到的时候,而不是提前计算好所有数据,因为有些场景下,并不是所有数据都会用到(比如棋局游戏,没必要计算所有的步骤)

LazyList构造器的tail参数传入的是一个方法,但该方法的执行只发生在需要的时候(这里只是一个demo,并不是效率最高的版本)

public class LazyList implements MyList {
    final T head;

    final Supplier> tail;

    public LazyList(T head, Supplier> tail) {
        this.head = head;
        this.tail = tail;
    }

    public T head() {
        return head;
    }

    public MyList tail() {
        return tail.get();
    }

    public MyList filter(Predicate p) {
        return isEmpty() ? this : p.test(head()) ? new LazyList<>(head(), () -> tail().filter(p)) : tail().filter(p);
    }

    @Override
    public boolean isEmpty() {
        return false;
    }
}

class Demo {
    public static LazyList from(int n) {
        return new LazyList(n, () -> from(n + 1));
    }

    public static MyList primes(MyList numbers) {
        return new LazyList<>(numbers.head(), () -> {
            return primes(numbers.tail().filter(n -> n % numbers.head() != 0));
        });
    }

    public static void main(String[] args) {
        LazyList numbers = from(2);
        int two = primes(numbers).head();
        int three = primes(numbers).tail().head();
        int five = primes(numbers).tail().tail().head();
        System.out.println(two + " " + three + " " + five);
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68085.html

相关文章

  • 促进数据中心产业新变革 边缘计算是如何做到的

    摘要:边缘计算与连接设备对于边缘计算来说,很大一部分转变可能都归功于用户和平台的分散性,以及近些年物联网市场的兴起,数据中心对于物联网设备和访问该数据的用户群体能够非常好的提供支撑。边缘计算的概念是满足用户所在的位置的需求。对于当今的企业级市场来说,数据已经成为了最为珍贵的资源,尤其是伴随着现在很多企业都已经开始进行数字化转型,使得整个社会和经济对于数据产生了一种依赖性,我们都知道,互联网基础设施...

    kuangcaibao 评论0 收藏0
  • 2019十大IDC技术趋势预测:有了它们零延迟指日可待

    摘要:今天我们在跟或谷歌等设备通话时,它们通常在不到一秒内做出响应,但将来它可能更快。十大技术预测持久记忆存储技术英特尔最近宣布推出持久存储器,它看起来像任何标准的,但能存储级别的数据,甚至能在断电时保存数据。就像电力一样,无处不在,又肉眼不可见。很快,我们就能见证实时计算的广泛应用,Redis Labs公司研发主管Madhukar Kumar表示。科技行业不同周期的热点各有侧重,比如互联网、云计...

    worldligang 评论0 收藏0
  • 大数据时代数据库-云HBase架构&生态&实践

    摘要:摘要第九届中国数据库技术大会,阿里云高级技术专家架构师封神曹龙带来题为大数据时代数据库云架构生态实践的演讲。主要内容有三个方面首先介绍了业务挑战带来的架构演进,其次分析了及生态,最后分享了大数据数据库的实际案例。数据备份及恢复。 摘要: 2018第九届中国数据库技术大会,阿里云高级技术专家、架构师封神(曹龙)带来题为大数据时代数据库-云HBase架构&生态&实践的演讲。主要内容有三个方...

    econi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<