频道栏目
首页 > 资讯 > 其他 > 正文

Kotlin — 3.集合与它的操作符们

16-11-15        来源:[db:作者]  
收藏   我要投稿

1.Kotlin中的集合介绍

好的,本节我们继续来搞Kotlin,这节要搞的是: Kotlin中的集合与它的操作符们集合在我们实际开发中用的还是比较频繁的,Kotlin中的集合不同于Java中的集合,Kotlin中的集合根据“是否可变”,分为两派:可变集合不可变集合,而后者是在前者的前面加上了 Mutable

列表List/MutableListSet/MutableSet映射Map/MutableMapCollection/MutableCollection迭代器Iterable/MutableIterable

关于可变不可变,其实看看这些类提供的方法就知道了(提供的读写相关的方法)我们可以打开kotlin-runtime-sources.jar包中的kotlin包,里面有个Collections.kt的文件,这里不对方法进行讲解,基本都是见名知意,打开这个文件后,点击AS左侧的Structure视图,来看看都有些什么?

首先是:Iterable接口,两个接口中都只有一个iterator()方法:

改方法返回一个Iterator,我们到Iterator.kt里看看,定义了四个接口,以及对应的方法,这就是当我们对集合进行循环迭代遍历时可供调用的一些方法!

接着看回Collections.kt,可以看到 CollectionMutableCollection给我们提供的方法:

再接着是实现了Collection接口的 ListSet,除了重写Collection中的方法外还新增了一些方法:

Map 则是:,然后提供的方法与参数如下:

整个文件的大概结构就是这样,方法也不细讲了,都是见名知意的!


2.创建集合


List

Set

Map

这的键值对用 to 关键字,key to value


3.强势的集合操作符们


Kotlin中关于集合的操作符有六类:

总数操作符 过滤操作符 映射操作符 顺序操作符 生产操作符 元素操作符

下面我们一一来对这些操作符进行讲解!

1)总数操作符


any —— 判断集合中 是否有满足条件 的元素; all —— 判断集合中的元素 是否都满足条件none —— 判断集合中是否 都不满足条件,是则返回true; count —— 查询集合中 满足条件元素个数reduce —— 从 第一项到最后一项进行累计reduceRight —— 从 最后一下到第一项进行累计fold —— 与reduce类似,不过有初始值,而不是从0开始累计; foldRight —— 和reduceRight类似,有初始值,不是从0开始累计; forEach —— 循环遍历元素,元素是it,可对每个元素进行相关操作; forEachIndexed —— 循环遍历元素,同时得到元素index(下标); max —— 查询最大的元素,如果没有则返回null; maxBy —— 获取方法处理后返回结果最大值对应的那个元素的初始值,如果没有则返回null; min —— 查询最小的元素,如果没有则返回null; minBy —— 获取方法处理后返回结果最小值对应那个元素的初始值,如果没有则返回null; sumBy —— 获取 方法处理后返回结果值总和dropWhile —— 返回从第一项起去掉满足条件的元素,直到不满足条件的一项为止

使用示例

结果


2)过滤操作符

见名知意,通过 某个条件 来对集合中的元素进行过滤,取其精华去其糟粕~
PS:过滤后会返回一个处理后的列表结果,但不会改变原列表!!!


filter —— 过滤 掉所有 满足条件 的元素 filterNot —— 过滤所有不满足条件的元素 filterNotNull —— 过滤NULL take —— 返回从第一个开始的n个元素 takeLast —— 返回从最后一个开始的n个元素 takeWhile —— 返回不满足条件的下标前面所有元素的集合 drop —— 返回 去掉前N个元素后 的列表 dropLastWhile —— 返回从最后一项起去掉满足条件的元素,直到不满足条件的一项为止 slice —— 过滤掉 非指定下标 的元素,即保留下标对应的元素过滤list中
指定下标的元素(比如这里只保留下标为1,3,4的元素)

使用示例

结果


3)映射操作符

这里的话,因为操作符只有五个,就不一个个分开了,直接解释一波后,
贴代码和运行结果~


map —— 将集合中的元素通过某个 方法转换 后的结果存到一个集合中; mapIndexed —— 除了得到 转换后的结果 ,还可以拿到Index(下标); mapNotNull —— 执行方法 转换前过滤掉NULL 的元素 flatMap —— 合并两个集合,可以在合并的时候做些小动作; groupBy —— 将集合中的元素按照某个条件分组,返回Map;

使用示例

结果


4)顺序操作符

同样,操作符也不多,只有五个,都是和元素排序相关的!


reversed —— 相反顺序 sorted —— 自然排序(升序) sortedBy —— 根据方法处理结果进行自然(升序)排序 sortedDescending —— 降序排序 sortedByDescending —— 根据方法处理结果进行降序排序

使用示例

结果


5)生产操作符

生产操作符只有四个,不是五个,看到网上相关的都说有五个,还有一个是:merge
作用是:把两个集合,按照相同下标,合成新的元素,合成的集合大小由最小的集合决定
然而,这个方法在Kotlin 1.0 Beta 2后的版本,就弃用了这个操作符,具体可见:传送门
当然有替代方案,可以使用 zip 操作符来实现这个功能!示例代码会给出~
另外,这节的操作符涉及到一个 Pair 的类,该类是Kotlin提供的用来处理双元对数据的,
可以理解成Map中的一个键值对,比如Pair(“key”,”value”) 等价于 “key” to “value”


zip —— 两个集合按照下标组合成一个个的Pair塞到集合中返回 partition —— 根据判断条件是否成立,拆分成两个 Pair plus —— 合并两个List,可以用”+”替代 unzip —— 将包含多个Pair的List 转换成 含List的Pair

使用示例

结果


6)元素操作符

contains —— 判断集合中是否有指定元素,有返回true elementAt —— 查找下标对应的元素,如果下标越界会抛IndexOutOfBoundsException elementAtOrElse —— 查找下标对应元素,如果越界会根据方法返回默认值(最大下标经方法后的值) elementAtOrNull —— 查找下标对应元素,越界会返回Null first —— 返回符合条件的第一个元素,没有 抛NoSuchElementException firstOrNull —— 返回符合条件的第一个元素,没有 返回null indexOf —— 返回指定下标的元素,没有 返回-1 indexOfFirst —— 返回第一个符合条件的元素下标,没有 返回-1 indexOfLast —— 返回最后一个符合条件的元素下标,没有 返回-1 last —— 返回符合条件的最后一个元素,没有 抛NoSuchElementException lastIndexOf —— 返回符合条件的最后一个元素,没有 返回-1 lastOrNull —— 返回符合条件的最后一个元素,没有 返回null single —— 返回符合条件的单个元素,如有没有符合或超过一个抛异常 singleOrNull —— 返回符合条件的单个元素,如有没有符合或超过一个返回null

使用示例

结果


本节小结

本节对Kotlin中的集合与相关操作符进行了详细的讲解,此文经过多次排版,我觉得
先描述操作符 -> 使用示例 -> 运行结果,这样应该是最清晰的了,
希望能帮助你更快掌握这些操作符!当然还是那句话:
不要去死记操作符,用到的时候再查
可以把本文收藏了或者点个喜欢,想查什么就查什么!

相关TAG标签
上一篇:Android启动过程详解(3)——Zygote
下一篇:自定义圆形ImageView 实现思路 -- Android 学习之路
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站