Kotlin学习(II)

  • Kotlin集合
  • Kotlin集合类型:
  • Kotlin集合具体分析:
  • 集合操作符


Kotlin集合

集合元素的特点:确定性;唯一性;无序性(元素无先后之分)
Kotlin集合分为可变集合和不可变集合,前者是在后者前面加了个Mutable

Kotlin集合类型:

  1. Iterable 表示一系列元素的集合/另一个实体上的迭代器
  2. MutableIterable:可变集合上的迭代器,提供在迭代式移除元素的能力
  3. Collection:元素通用集合,接口中的方法仅支持对集合的只读访问
  4. MutableCollection:支持添加和删除集合中元素
  5. List:有序集合,只支持只读访问
  6. MutableList:支持添加和删除
  7. Set:不支持重复元素的无序集合
  8. MutableSet:支持添加和删除
  9. Map:集合中保存对象(键值对),支持有效检索与每个键对应的值。
  10. 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集合

集合操作符

  1. 总数操作符
    对集合进行简单筛选以生成新的集合
  • 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 返回总和
  1. 过滤操作符
  • filter 过滤所有满足条件元素
  • filterNot
  • filterNotNull 过滤掉null
  • take 返回从第一个元素开始的n个元素
  • takeLast 返回从最后一个元素开始的n个元素
  • takeWhile 返回从第一个元素开始符合给定函数条件的元素
  • drop 返回去掉前n个元素后的列表
  • dropLastWhile
  • slice 过滤掉非指定下标对应的元素,也就是保留指定下标对应元素
  1. 映射操作符
  • flatMap 合并两个集合
  • groupBy 将集合中元素按照某个条件分组,返回Map
  1. 顺序操作符
  • reversed 元素顺序反转
  • sorted 升序
  • sortedBy 按某种处理方法处理后升序
  • sortedDescending 降序
  • sortedDescendingBy 与sortedBy类似
  1. 生产操作符
  • zip 将两个集合按照下标组合成一个个Pair放到集合中返回
listOf(Pair(1, 7), Pair(2, 8)),

list.zip(listOf(7, 8))
  • partition 根据判断条件是否成立,差分为两个Pair
  • plus 合并两个List集合,可用"+"代替
  • unzip 多个Pair的 List集合转换为含List集合的Pair
  1. 元素操作符
  1. contains 判断是否有指定元素,有则返回true
  2. elementAt 查看指定下标对应元素,若下标越界抛出IndexOutOfBoundsException异常
  3. first 返回符合条件的第一个元素,若没有抛出NoSuchElementException异常
  4. firstOrNull 返回符合条件的第一个元素,若没有返回null
  5. indexOf 返回指定下标对应元素,若没有返回-1
  6. single 返回符合条件的单个元素,若没有或超出一个则抛出异常
  7. singleOrNull 返回符合条件的单个元素,若没有或超出一个返回null