【KtAndroid - 5】kotlin的集合框架

首先,我说一下,很多人大概都还在犹豫要不要学kotlin。

其实我也犹豫过,但是,我还是学了,正在学。

我来说一下我的看法。

对于一门编程语言的兴起,我们无法阻止,更不能阻止。

为什么呢?因为这代表了时代的进步,如果连时代的脚步都不跟上而是选择逃避或者观望,那么注定会被时代淘汰。

都2020了,我还在网上看见各种人,各种借口各种逃避。

没有用的,逃避解决不了任何问题。既然解决不了问题,那么就不能面对问题么?

多掌握一门技术总不是坏事。

很多人都说,妈耶,又出新的技术,学不动了。

呵呵,我想说,你学过么?认真学过么?

还是那句话:对于一门编程语言的兴起,我们无法阻止,更不能阻止。

人类所具备的最伟大的一个特点就是能学习,会学习。

不要让逃避成为借口,因为那会使你逐渐堕落、消亡。

1. List与MutableList

在java中,集合框架非常重要,几乎每个程序中都会用到。

然而在kotlin中,同样也提供了集合框架。

我们都知道,在java中有一个List<T>集合。同样,在kotlin中也有List<T>集合

但是两者是有区别的。

在java中List<T>属于可变长度集合,也就是可以不停的addremove

然而在kotlinList<T>是属于不可变长的集合。

看个例子:

1.png

可以看到。

  1. 我们首先listof()了一个list0:List<Int>
  2. 然后使用list0.查看了它支持的所有方法,白色加粗的方法是它自身方法。

发现有[]数组的取值法,get()的取值法,还有一系列其他方法。

但是独独没有add(),remove()方法。

那么,就有人会问了,如果我需要的可变长的List怎办呢?

来呗,接下来我们就来说说 MutableList

中文意思不就是 可变的列表 么。

看图:

2.png

是不是出来了?

这就kotlin中可变列表 MutableList 与定长列表 List 的介绍了。

但是!!

为什么会有这两个可变概念呢?

2. List与MutableList在java中的定义(CollectionsKt)

之前也说过,kotlin是调用的jvm,所有的kotlin代码编译后,将会转换成class可执行文件。

那么我们就来看看在java中List与MutableList的概念了。

kotlin to java:

3.png

从上图我们可以看到,在java代码中两个变量list0list1 都是List类型。

但是从调用的方式来看,一个是调用CollectionsKt下的listOf,另一个则是调用的mutableListOf

那么这两个有什么区别呢?

也就是可变和不可变的区别了。

我首先把这部分的两个java list0List1 说开。

首先,java中的List<T>从来没有禁用过add和remove吧。

4.png

不论是ArrayListLinkedList都有add和remove方法。那么由此是不是可以推倒出add和remove是由kotlin所控制的?

来,那就看看kotlin中的ListMutableList

按住 ctrl+鼠标左键 点击指定方法,进入源码。

List

5.png

MutableList

6.png

瞧,刚打开就一目了然。

讲完了?!好吧……

3. Map 与 MutableMap

接下来就说MapMutableMap了,与List一样,两者都是java中的Map衍生出来的,就主要说说用法。

7.png

与java不同的是,java所用是map.put(key,value) ,kotlin中则是 key to value 注意to前后的空格哦。

一. Pair

另外就是Pair

val pair = "key" to "vlaue"
val pair1 = Pair("key11", "value11")

其实二者并没有什么不同,前者就相当于一个隐式的Pair了,同时Pair还定义了一个first和一个second,可以取key和value的值。

二. Triple

这是一个很新的类了,相较于Pair Triple 就是多了一个成员

14.png

4. Set 与 MutableSet

8.png

5. 可变长框架的 增、删、查、改

在java中想要对List进行增删查改只需要add,remove,get,replace

然而在kotlin中还有一种方式

list1.add("add1")
list1 += "add2"

运行结果:

11.png
list1.remove("add1")
list1 -= "add2"

运行结果:

12.png

类似数组的操作方式:

val v = list1[0]
list1[1] = "1000"
println(v)
println(list1)

val v1 = map1["key11"]
map1["key11"] = "我爱你"
println(v1)
println(map1)
13.png

6. typealias

接下来要说的就是typealias了,字面意思理解就是类型别名

那么什么是类型别名呢?

dart中有typeof,c++里有命名空间

9.png

首先,我们创建一个ArrayList(这东西在java中可是及其常见的啊)

打开源码:

10.png

瞧,一系列的public actual typealias 分别赋值就是java.util.*

那么是不是显而易见了,就是给java中相应的类取了一个别名,好让它能在kotlin中使用。

7. actual与expect

既然碰到了actual那我就提一下吧。

根据 //www.greatytc.com/p/c22ae432827a 这篇文章。

我们可以知道:

expect 定义了一个跨平台(jvm)接口

actual则表示了该接口在kotlin中的实现

8. 总结

  1. kotlin中,ListMapSet表示定长的集合,不能进行addremove等一系列增删改
  2. kotlin中,MutableListMutableMapMutableSet与java中的ListMapSet无异
  3. kotlin中,typealias 关键字表示定义别名,通俗来说就是取外号。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容