当前位置: 首页 > news >正文

重庆建站公司官网东莞建设质监网站

重庆建站公司官网,东莞建设质监网站,淘宝联盟怎么新建网站,h5免费制作kotlin.collections.Maps.kt 文件定义了许多针对 Map 接口的工具函数#xff0c;其中大多数是涉及函数式编程的高阶函数#xff0c;我们在这里先不讲#xff0c;等到集合框架结束后进入高阶函数时再讲。今天只讲几个简单的函数。Pair 类和 to() 函数Map 接口表示一种“键 -其中大多数是涉及函数式编程的高阶函数我们在这里先不讲等到集合框架结束后进入高阶函数时再讲。今天只讲几个简单的函数。Pair 类和 to() 函数Map 接口表示一种“键 - 值”的数据结构一个键对应一个值。但在具体实现中Map 并没有维护键和值两个结构而是一个个 Entry 对象每个 Entry 对象表示一个键与值的对应关系它有 3 个属性key、value 和 hash因为 hash 只与 key 有关所以可以视为只有两个属性key 和 value。Kotlin 为简化 Map 的创建定义了一个新类Pair它相当于简化版的 Map.Entry 类// kotlin.Tuple.ktdata class Pair(val first: A,val second: B) : Serializable {override fun toString() ($first, $second)}嗯我们复习一下数据类请问这个 Pair 类封装了哪些函数呢答案是 getFirst()、getSecond()、component1()、component2()、copy()、hashCode()、equals() 函数。这里的 first 相当于 key、second 相当于 valuehashCode() 充当了 hash 属性。有了 Pair 类还不够Kotlin 还定义了一个 to 函数来创建 Pair 对象// kotlin.Tuple.ktinfix fun A.to(that: B): Pair Pair(this, that)这是一个用 infix 修饰的中缀函数也是一个 A 类对象的扩展函数它接受一个 B 类的参数使用被扩展的 A 类对象和作为参数的 B 类对象创建一个 Pair 对象。于是我们就能这样写了val p1 1 to Hello// 等价于 val p1 1.to(Hello)val p2 p1 to World// p1: Pair// p2: Pair, StringmapOf() 与 mutableMapOf() 函数与 List 和 Set 相似Kotlin 的 Map 接口也提供了生成不可变 Map 的 mapOf() 函数和生成可变 Map 的 mutableMapOf() 函数不过与前两者不同的是Map 接口的两个函数 只接受 Pair 对象作为参数inline fun mapOf(): Map emptyMap()fun mapOf(pair: Pair): Map java.util.Collections.singletonMap(pair.first, pair.second)fun mapOf(vararg pairs: Pair): Map if (pairs.size 0) linkedMapOf(*pairs) else emptyMap()inline fun mutableMapOf(): MutableMap LinkedHashMap()fun mutableMapOf(vararg pairs: Pair): MutableMap LinkedHashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }可以注意这几个细节mapOf() 和 mutableMapOf() 在元素数大于 1 时都采用 LinkedHashMap 的实现方式这与 setOf() 和 mutableSetOf() 函数采用 LinkedHashSet 的实现是相似的。此外因为 LinkedHashSet 只是对 LinkedHashMap 的简单包装可以认为这四个函数都采用了相似的实现方式。linkedMapOf(*pairs) 是什么写法别以为这是 C 语言的指针呀这叫 展开操作符一般来说我们给 vararg 函数传参数时只能一个一个地传如果想把一个数组传给 vararg 参数可以在数组前面加个 *告诉编译器“我不是把数组对象作为参数而是把数组里的每个元素作为参数”可以这样写val array intArrayOf(1, 2, 3)val list listOf(0, *array, 4, 5)// list: List [0, 1, 2, 3, 4, 5]这里用到了改进的 putAll() 函数下面会讲到。hashMapOf() 与 linkedMapOf() 函数与 List 和 Set 接口几个具体实现类函数相似hashMapOf() 和 LinkedMapOf() 函数创建的都是 可变 Mapinline fun hashMapOf(): HashMap HashMap()fun hashMapOf(vararg pairs: Pair): HashMap HashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }inline fun linkedMapOf(): LinkedHashMap LinkedHashMap()fun linkedMapOf(vararg pairs: Pair): LinkedHashMap LinkedHashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }解构函数我们之前讲到了所谓解构函数就是用 operator 关键字修饰的 componentN() 函数这里的 N 是从 1 到 5 的整数。Maps.kt 中定义了两个解构函数inline operator fun Map.Entry.component1(): K keyinline operator fun Map.Entry.component2(): V value它们都是 Map.Entry 的扩展函数分别返回这个 Entry 的键和值常用来遍历 Map 的键和值val map mapOf(1 to 2, 3 to 4)for((key, value) in map) {println($key - $value)}// 1 - 2// 3 - 4这个 for 循环会遍历 map 的每一个 Entry调用解构函数分别把 Entry 的键和值赋给临时变量 key 和 value然后用 key 和 value 执行我们定义的循环体。plus() 与 minus() 函数Map.kt 重载了操作符 和 -方便我们增删元素。因为重载函数实在太多这里就不列出来了总结几个点吧所有 plus() 和 minus() 函数都是 不可变 的 Map 的扩展函数所以每次调用 plus() 或 minus() 函数都会产生一个新的 Map这在 Map 内元素很多时可能会产生性能问题。plus() 和 minus() 函数有以下几种参数不同的重载形式ArrayPair 数组IterablePair 集合Pair单个 Pair 对象SequencePair 序列(Kotlin 添加的新集合形式)Map另一个 Map对于 MutableMapMaps.kt 重载了 (plusAssign() 函数)和 -(minusAssign() 函数)操作符分别相当于调用 put() / putAll() 函数和 remove() / removeAll() 函数val mutableMap mutableMapOf(1 to 2, 3 to 4)mutableMap arrayOf(1 to 2, 5 to 6)// mutableMap [1-2, 3-4, 5-6]mutableMap - 3// mutableMap [1-2, 5-6]toMap() 函数Maps.kt 还提供了一系列 toMap() 函数用来将其它数据形式的 Pair 对象转换为 可变 的 Map包括下面两套重载形式支持 Array、Iterable、Sequence 和 Map 四种数据结构转换为 Map支持无参和一个 destination 参数两种形式前者直接将转换得到的 Map 赋给自身后者则会把转换成的 Map 赋给 destination。改进的 putAll() 函数Maps.kt 给 MutableMap 重载了三个新的 putAll() 函数它们分别接受 Array、Iterable 和 Sequence 对象。
http://www.pierceye.com/news/230520/

相关文章:

  • wordpress typo3seo排名优化哪家好
  • 做pc端网站什么开头参考消息网国内新闻
  • 济南网站开发xywlcn宁波公司注册代理公司
  • 网站怎么找的中国外贸出口网站
  • 个人备案网站可以做商城吗做视频点播网站的要求
  • 那个网站点击率高域名解析大全
  • 做优化排名会不会影响网站速度广州网匠营销型网站建设公司
  • 南京林业大学实验与建设网站如何查询网站备案时间查询
  • 做食品网站有哪些凡科建站做的网站收录慢吗
  • 做平面还有什么素材网站集团网站建设
  • seo网站营销推广公司不错的免费网站建设
  • 怎么做自助交易网站平面设计师工资一般多少钱一个月
  • 网站建设如何运营seoul是什么意思
  • 51CTO学院个人网站开发视频营销策划包括哪些内容
  • 专做排名的网站wordpress样式乱了
  • 网站空间域名维护协议网站备案的意义
  • word可以做网站链接吗网站推广的基本方法有哪些
  • 公司展示型网站wordpress后台邮箱怎么设置
  • 小程序咸鱼之王2022年搜索引擎优化指南
  • 企业网站建设 价格wordpress汉化主题
  • 兰州市建设厅官方网站做网站用的编程工具
  • 网站建设及维护招聘周口航迪科技网站建设公司怎么样
  • 服装外贸网站建设discuz应用
  • flash个人网站欣赏网站营销单页怎么做
  • 设计网站用什么语言网站建设需求范文
  • seo织梦网站建设步骤昆明网络营销软件
  • 企业网站 静态页面成都设计公司邮箱
  • 创世网站建设 优帮云北京网站建设工作室
  • 网站空间提供商哪个网站可以做英文兼职
  • 社区网站制作平台网站建设调研报告