kotlin 序列_Kotlin,合集和序列

kotlin 序列

当将流添加到Java 8时,我想加入潮流。 我阅读了博客文章,观看了视频,参加了研讨会,以了解所有内容。 过了一会儿,我变得足够自在...但是我对实现感到不满意:虽然流提供了具有功能性方法的方法,但是传统集合却没有。

如果要在现有集合上使用Java功能,则需要将后者转换为流,然后再次返回。 例如,以下代码通过流传输步骤从集合中筛选出一些元素:

List<String>names=Arrays.asList("Joe","Jack","William","Averell");
List<String>jNames=names.stream()
                           .filter(name->name.startsWith("J"))
                           .collect(Collectors.toList());

另一方面,Kotlin集合本身提供功能:

valnames=listOf("Joe","Jack","William","Averell")
valjNames=names.filter{it.startsWith("J")}

这就是我认为这是一种更好的方法的原因(请注意此处的过去时)。 但是,有一个很大的收获: Kotlin函数函数不是延迟计算的 ,而Java stream函数是! 如果该集合仅包含几个元素,这是完全可以的,但是如果有很多元素-或处理管道中有很多步骤,则可能是一个大问题。

但是,Kotlin还提供了一个延迟评估的对象: Stream对应项是Sequence

类图
集合和序列之间的通用功能尽管它们共享相同的功能,但Kotlin集合和Sequence之间没有共享的接口。 它们的功能通过类似宏的脚本生成(有关更多详细信息,请参见GenerateStandardLib)。 例如,序列函数在生成的kotlin.sequences._Sequences.kt文件中定义为扩展名。

结论

如果一个集合包含多个元素或绑定了多个元素,则序列应优先于集合。 否则,使用标准集合就可以了,因为它们具有相同的功能。

翻译自: https://blog.frankel.ch/kotlin-collections-sequences/

kotlin 序列

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值