kotlin 集合 有更新!

  cheney

集合

跟据是否可变分为:不可变集合与可变集合,后者在前者的前面加上 Mutable
  • 列表:List/ MutableList
  • 集:Set/MutableSet
  • 映射:Map/MutableMap
  • 集合:Collection/MutableCollection
  • 迭代器:Iterable/MutableIterable

list:

  • 空List val emptyList = emptyList()
  • 普通List
val list = listOf(1,2,3)
  • 可修改的List
val mList = mutableListOf(1,2,3)

Set:

  • 空set val emptySet = emptySet()
  • 普通set
val set = setOf(1,2,3)
  • 可变的set
val mSet = mutableSetOf(1,2,3)
  • HashSet
val hashSet = hashSetOf(1,2,3)
  • LinkedSet
val linkedSet = linkedSetOf(1,2,3)
  • SortedSet
val sortedSet = sortedSetOf(1,2,3)

map:

这的键值对用 to 关键字 , key to value
  • 空Map
val emptyMap = emptyMap()
  • 普通map
val map = mapOf(1 to "coder",2 to "pig")
  • 可变的map
val mMap = mutableMapOf(1 to "coder",2 to "pig")
  • HashMap
val hashMap = hashMapOf(1 to "coder",2 to "pig")
  • LinkedMap
val linkedMap = linkedMapOf(1 to "coder",2 to "pig")
  • SortedMap
val sortedMap = sortedMapOf(1 to "coder",2 to "pig")

集合操作符

总数操作符、过滤操作符、映射操作符、顺序操作符、生产操作符、元素操作符
  • 总数操作符:
    • any 判断集合中是否有满足条件的元素
    • all 判断集合中的元素是否都满足条件
    • none 判断集合是否都不满足条件,是则返回true
    • count 查询集合中满足条件的元素个数
    • reduce 从第一项到最后一项进行累计
    • reduceRight 从最后一项到第一项进行累计
    • fold 与reduce类似,不过有初始值,而不是从0开始累计
    • foldRight 和reduceRight类似,有初始值,而不是从0开始累计
    • forEach 循环遍历元素,元素是it,可对每个元素进行相关操作
    • forEachIndexed 循环遍历元素,同时得到元素index(下标)
    • max 查询最大的元素,如果没有则 返回null
    • maxBy 获取方法处理后返回结果最大值对应的哪个元素的初始值,如果没有则返回null
    • min 查询最小值
    • minBy 同maxBy
    • sumBy 获取方法处理后返回结果值的总和
    • dropWhile 返回从第一项起,去掉满足条件的元素,直到不满足条件的一项为止
  • 过滤操作符:过滤后会返回一个处理后的列表结果,但不会改变原列表
    • filter 过滤掉所有满足条件的元素
    • filterNot 过滤所有不满足条件的元素
    • filterNotNull 过滤NULL
    • take 返回从第一个开始的n个元素
    • takeLast 返回从最后一个开始的n个元素
    • takeWhile 返回不满足条件的下标前面的所有元素的集合
    • drop 返回去掉前N个元素后的列表
    • dropLastWhile 返回从最后一项起,去掉满足条件的元素,直到不满足条件的一项为止
    • slice 过滤掉非指定下标的元素,即暴力下标对应的元素过滤list中指定下标的元素
  • 映射操作符:
    • map 将集合中的元素通过某个方法转换后的结果存到一个集合中
    • mapIndexed 除了得到转换后的结果,还可以拿到index(下标)
    • mapNotNull 执行方法转换前过滤掉为Null的元素
    • flatMap 合并两个集合,可以在合并的时候做些小动作
    • groupBy 将集合中的元素按照某个条件分组,返回map
  • 顺序操作符:
    • reversed 相反顺序
    • sorted 自然排序(升序)
    • sortedBy 根据方法处理结果进行自然排序
    • sortedDescending 降序排序
    • sortedByDescending 根据方法处理结果进行降序排序
  • 生产操作符:
    • zip 两个集合按照下标组合成一个个的Pair塞到集合中返回
    • partition 根据判断条件是否成立,拆分成两个Pair
    • plus 合并两个list,可以用“+“替代
    • unzip 将包含多个Pair的List转换成含List的Pair
  • 元素操作符:
    • contains 判断集合中是否有指定元素,有返回true
    • elementAt 查找下标对应的元素,如果下标越界会抛IndexOutOfBoundsException
    • elementAtOrElse 查找下标对应元素,如果越界会根据方法返回默认值
    • elementAtOrNull 查找下标对应元素,越界会返回Null
    • first 返回符合条件的第一个元素,没有抛NoSuchElementException
    • firstOrNull 返回符合条件的第一个元素,没有返回null
    • indexOf 返回指定下标的元素,没有返回-1
    • indexOfFirst 返回第一个符合条件的元素的下标,没有返回-1
    • indexOfLast 返回最后一个符合条件的元素下标,没有返回-1
    • last 返回符合条件的最后一个元素,没有抛NoSuchElementException
    • lastIndexOf 返回符合条件的最后一个元素,没有返回-1
    • lastOrNull 返回符合条件的最后一个元素,没有返回null
    • single 返回符合条件的单个元素,如果没有符合或超过一个,抛异常
    • singleOfNull 返回符合条件的单个元素,如果没有符合或超过一个,返回null