美文网首页
惰性集合操作:序列

惰性集合操作:序列

作者: Ryan_Hoo | 来源:发表于2018-07-21 21:23 被阅读0次

集合式函数(如map和filter)会及早地创建中间集合,即每一步的中间结果都被存储在一个临时列表。序列可以避免创建这些临时中间对象

people.map(Person::name).filter { it.startsWith("A") }

改为序列:people.asSequence()      //集合转为序列

                             .map(Person::name).filter { it.startsWith("A") }

                              .toList()               //序列转为列表

Kotlin惰性集合操作的入口就是Sequence接口。这个接口表示的就是一个可以逐个列举元素的元素序列。Sequence只提供了一个方法,iterator,用来从序列中获取值

1.1、执行序列操作:中间和末端操作

一次中间操作返回的是另一个序列,这个新序列知道如何变换原始序列中的元素。

一次末端操作返回的是一个结果(可能为集合、元素、数字...)

people.asSequence()   .map(Person::name).filter { it.startsWith("A") } .toList()

                                     |------------中间操作----------------------------------|---末端操作---|

中间操作始终是惰性的。没有末端操作意味着map和filter变换被延期了,末端操作出发了所有的延期计算

1.2、创建序列

创建序列有两种方法:1、asSequence()。2、使用generateSequence()。

val  naturalNumbers=generateSequence(0){it +1}

val numbersTo100= naturalNumbers.takeWhile{ it <= 100 } //100以内的自然数序列

naturalNumbers和numbersTo100都是有延期操作的序列。序列中的实际数字直到你调用末端操作的时候才会求值

fun File.isInsideHiddenDirectory() = generateSequence(this) { it.parentFile }.any{ it. isHidden }

val  file = File (" /Users/svtk/.HiddenDir/a.txt")

file.isInsideHiddenDirectory()  //查询文件是否放在隐藏目录中。

相关文章

  • 惰性集合操作:序列

    集合式函数(如map和filter)会及早地创建中间集合,即每一步的中间结果都被存储在一个临时列表。序列可以避免创...

  • Kotlin 惰性集合操作-序列 Sequence

    集合操作函数 和 序列 在了解 Kotlin 惰性集合之前,先看一下 Koltin 标注库中的一些集合操作函数。 ...

  • Kotlin之惰性集合操作:序列

    在使用集合函数比如map和filter。这些函数会及早的创建中间集合,也就是说每一步的中间结果都被存储在一个临时列...

  • Kotlin 性能优化利器 —— Sqeuence 原理浅析

    前言 本文将介绍 Kotlin 中 序列(Sequence)的概念及使用,并介绍该惰性集合操作对集合链式调用性能优...

  • Kotlin | 5.lambda 编程

    本章内容包括: Lambda 表达式和成员引用以函数式风格使用集合序列:惰性地执行集合操作在 Kotlin中使用 ...

  • Clojure文件操作和惰性序列

    读取和写入文件 数据一般都是存储在纯文本文件当中,存储的形式多种多样。本文,我会介绍如何在Clojure中读取和写...

  • python集合操作

    python的集合操作 set是一个无序不重复的序列 可以用 { } 或者 set( ) 函数创建集合 集合存放不...

  • Swift Sequence(序列) & Collection(

    Swift Sequence(序列) & Collection(集合) & 高阶函数 [TOC] 前言 序列和集合...

  • Stream API ------java8 新特性(2)

    一、流(Stream) 是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。(集合讲的是数据,流讲的是计算...

  • Stream API ------java8 新特性(2)

    一、流(Stream) 是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。(集合讲的是数据,流讲的是计算...

网友评论

      本文标题:惰性集合操作:序列

      本文链接:https://www.haomeiwen.com/subject/mfhcmftx.html