禅与计算机程序设计艺术Kotlin精讲-黑马程序员(原创)Kotlin编程

kotlin精讲-第5章(8)集合(list set map)

2017-12-06  本文已影响273人  739c8d412b4c

集合定义和分类

集合定义

从这节开始,我们将学习Kotlin中的集合。如果将区间比喻为MP3,那么集合就是现在的智能手机,MP3只能播放音乐,而手机不仅可以播放音乐还可以播放视频。

简而言之,就是区间只能存储简单数据类型,但是集合除了可以存储基本数据类型,还可以存储自定义的数据类型,功能更强大。集合是Kotlin中非常重要的知识点,开发中经常使用集合缓存数据,比如商品信息等。

集合分类

同Java,集合分为三种类型,分别是List、Set和Map集合。分别对应了List、Set和Map三个接口。其中List、Set接口默认实现了Collection接口,参考类继承截图:

Map接口没有实现任何其他接口。

List、Set和Map集合各自特点和区别是什么呢?我们通过一个表列举下:

集合 特点
List (1)实现Collection接口 (2)存储的元素有序可重复 (3)常用子类ArrayList、LinkedList等
Set (1)实现Collection接口 (2)存储的元素有序不重复 (3)常用子类HashSet、LinkedSet
Map (1)不实现Collection接口 (2)存储的是键值对key-value (3)存储的元素无序可重复 (4)常用子类HashMap、LinkedHashMap

集合可写&不可写

Java中集合和Kotlin中的集合大同小异。两者有一个非常大的区别就是,Java中的List、Set、Map集合都是可读可写的。Kotlin中List、Set、Map的集合在读方面都是可读的,在写方面则分为可写和不可写集合。

Java中List、Set集合都实现了Collection接口,Java中的Collection接口就已经包含了add方法,所以Java中所有List、Map集合都是可写的,参考Java中Collection接口的Structure截图:

[图片上传失败...(image-a21bcc-1512537988985)]

   Kotlin中的List、Set集合都实现了Collection接口,但Kotlin中的Collection接口并没有包含add方法,参考Kotlin中Collection的Structure截图:

那add方法定义到哪里去了呢?Kotlin为Collection新增一个子接口MutableCollection,add方法定义到了MutableCollection中,参考Kotlin中MutableCollection部分源码截图:

所以,只要实现了MutableCollection的List、Set集合都是可写的。MutableList、MutableSet都是实现了MutableCollection接口的集合。

Java中Map集合都实现了Map接口,Java中的Map接口就已经包含了put方法,所以Java中所有Map集合都是可写的,参考Java中Map接口的Structure截图:

Kotlin中的Map集合都实现了Map接口,但Kotlin中的Map接口并没有包含put方法,参考Kotlin中Map接口的Structure截图:

那put方法定义到哪里去了呢?Kotlin为Map接口新增一个子接口MutableMap,put方法定义到了MutableMap接口中,参考Kotlin中MutableMap接口的Structure截图:

所以,只要实现了MutableMap的Map集合都是可写的。MultiHashtable都是实现了MutableCollection接口的集合,使用MutableCollection创建的map集合都是可写的。

总结起来就是,使用MutableList、MutableSet、MutableMap创建的集合都是可写的, Mutable的意思本来也是“易变的,性情不定的”。

上一篇下一篇

猜你喜欢

热点阅读