kotlin中的Sequences(序列)与Iterable(集合)区别

序列

我自己的理解,序列和集合差不多,提供与Iterable 相同的函数,但是实现另一种方法来进行多步骤聚合操作

注意

当 Iterable 的处理包含多个步骤时,它们会执行每个处理步骤完成并返回其结果(中间集合)。 在此集合上执行以下步骤。反过来,序列的多步处理在可能的情况下会延迟执行:仅当请求整个处理链的结果时才进行实际计算。

操作执行的顺序不同:Sequence 对每个元素逐个执行所有处理步骤。 反过来,Iterable 完成整个集合的每个步骤,然后进行下一步。

每次迭代Sequences(序列) 时,都会计算元素。Lists(集合) 中的元素只计算一次,然后存储在内存中。

示例

    val words = "The quick brown fox jumps over the lazy dog".split(" ")
    val lengthsList = words.filter { println("filter: $it"); it.length > 3 }
        .map { println("length: ${it.length}"); it.length }
        .take(4)
    println("Lengths of first 4 words longer than 3 chars:")
    println(lengthsList)
    println("++++++++++++++++++++++++++++++++++")
    val words1 = "The quick brown fox jumps over the lazy dog".split(" ").asSequence()
    val lengthsSequence = words1.filter { 

运行结果
在这里插入图片描述
序列可避免生成中间步骤的结果,从而提高了整个集合处理链的性能。
但是,序列的延迟性质增加了一些开销
因此,应该同时考虑使用 Sequence 与 Iterable,并确定在哪种情况更适合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值