Kotlin学习(II)
- Kotlin集合
- Kotlin集合类型:
- Kotlin集合具体分析:
- 集合操作符
Kotlin集合
集合元素的特点:确定性;唯一性;无序性(元素无先后之分)
Kotlin集合分为可变集合和不可变集合,前者是在后者前面加了个Mutable
Kotlin集合类型:
- Iterable 表示一系列元素的集合/另一个实体上的迭代器
- MutableIterable:可变集合上的迭代器,提供在迭代式移除元素的能力
- Collection:元素通用集合,接口中的方法仅支持对集合的只读访问
- MutableCollection:支持添加和删除集合中元素
- List:有序集合,只支持只读访问
- MutableList:支持添加和删除
- Set:不支持重复元素的无序集合
- MutableSet:支持添加和删除
- Map:集合中保存对象(键值对),支持有效检索与每个键对应的值。
- MutableMap:一个可修改的集合
Kotlin集合具体分析:
- List & MutableList
List为有序且可重复集合
val list1 = emptyList<String>() //创建空List集合
val list2 = listOf<Int>(1,2,3) //创建一个只读不可变List集合
val list3 = mutableListOf<Int>(1,2,3) //创建一个可变List集合
ListOf()使用ArrayList实现,在程序开发中应尽可能使用List一定程度上可提高内存效率
- Set & MutableSet
集合中对象不按特定顺序排列,且无重复元素
val set1 = emptySet<String>() //创建一个空的set集合
val set2 = setOf(1,2,3) //创建一个只读Set集合
val set3 = mutablSetOf(1,2,3) //创建一个可变Set集合
val set4 = hashSetOf(1,2,3) //创建一个hashset集合
val set5 = linkedSetOf(1,2,3) //创建一个linkedset集合
val set6 = sortedSetOf(1,2,3) //创建一个sortedset集合(排序)
- Map & MutableMap
val map1 = emptymap<Int,String>() //创建一个空的Map集合
val map2 = mapOf(1 to "one",2 to "two",3 to "three") //创建一个普通Map集合
val map3 = mutableMapOf(1 to "one",2 to "two",3 to "three") //创建一个可变Map集合
val map4 = hashMapOf(1 to "one",2 to "two",3 to "three") //创建一个普通HashMap集合
val map5 = SortedMapOf(1 to "one",2 to "two",3 to "three") //创建一个普通SortedMap集合
集合操作符
- 总数操作符
对集合进行简单筛选以生成新的集合
- any 判断集合中是否有满足条件的元素
- all 判断集合中的元素是否都满足条件
- none 判断集合中的元素是否都不满足条件,是则返回true
- count 查询集合中满足条件元素的个数
- reduce 累计从第一个元素到最后一个元素
- reduceRight 累计从最后一个元素到第一个元素
- fold 与reduce类似,有初始值,并非从0开始累计
- foldRight 与reduceRight类似,有初始值,并非从0开始累计
- forEach 循环遍历
- forEachIndexed 循环遍历同时得到元素下标(元素索引)
- dropWhile 返回从第一个元素起,去掉满足条件的元素,知道不满足条件的那一项为止
- max 查询最大元素,没有返回null
- maxBy 返回最大值对应元素的初始值,没有返回null
- min 与max类似
- minBy 与maxBy类似
- sumBy 返回总和
- 过滤操作符
- filter 过滤所有满足条件元素
- filterNot
- filterNotNull 过滤掉null
- take 返回从第一个元素开始的n个元素
- takeLast 返回从最后一个元素开始的n个元素
- takeWhile 返回从第一个元素开始符合给定函数条件的元素
- drop 返回去掉前n个元素后的列表
- dropLastWhile
- slice 过滤掉非指定下标对应的元素,也就是保留指定下标对应元素
- 映射操作符
- flatMap 合并两个集合
- groupBy 将集合中元素按照某个条件分组,返回Map
- 顺序操作符
- reversed 元素顺序反转
- sorted 升序
- sortedBy 按某种处理方法处理后升序
- sortedDescending 降序
- sortedDescendingBy 与sortedBy类似
- 生产操作符
- zip 将两个集合按照下标组合成一个个Pair放到集合中返回
listOf(Pair(1, 7), Pair(2, 8)),
list.zip(listOf(7, 8))
- partition 根据判断条件是否成立,差分为两个Pair
- plus 合并两个List集合,可用"+"代替
- unzip 多个Pair的 List集合转换为含List集合的Pair
- 元素操作符
- contains 判断是否有指定元素,有则返回true
- elementAt 查看指定下标对应元素,若下标越界抛出IndexOutOfBoundsException异常
- first 返回符合条件的第一个元素,若没有抛出NoSuchElementException异常
- firstOrNull 返回符合条件的第一个元素,若没有返回null
- indexOf 返回指定下标对应元素,若没有返回-1
- single 返回符合条件的单个元素,若没有或超出一个则抛出异常
- singleOrNull 返回符合条件的单个元素,若没有或超出一个返回null