kotlin list常用操作符

kotlin list常用操作符

1. 下标操作类

  • contains —— 判断是否有指定元素
  • elementAt —— 返回对应的元素,越界会抛IndexOutOfBoundsException
  • firstOrNull —— 返回符合条件的第一个元素,没有 返回null
  • lastOrNull —— 返回符合条件的最后一个元素,没有 返回null
  • indexOf —— 返回指定元素的下标,没有 返回-1
  • singleOrNull —— 返回符合条件的单个元素,如有没有符合或超过一个,返回null
val list1 = listOf(1, 2, 3, 4, 5, 6)
Log.i(TAG, "${list1.contains(2)}") // true
    
Log.i(TAG, "${list1.elementAt(2)}") // 3
    
Log.i(TAG, "${list1.firstOrNull { it % 2 == 0 }}") // 2
    
Log.i(TAG, "${list1.lastOrNull { it % 2 == 0 }}") // 6
    
Log.i(TAG, "${list1.indexOf(1)}") // 0
    
Log.i(TAG, "${list1.singleOrNull { it % 2 == 0 }}" ) // null

2. 判断类

  • any —— 判断集合中,是否有满足条件的元素
  • all —— 判断集合中的元素 是否都满足条件
  • none —— 判断集合中是否都不满足条件,是则返回true
  • count —— 查询集合中满足条件的元素个数
  • reduce —— 从第一项到最后一项进行累计
val list2 = listOf(1, 2, 3, 4, 5, 6)
Log.i(TAG, "${list2.any { it % 2 == 0 }}") // true
    
Log.i(TAG, "${list2.all { it % 2 == 0 }}") // false
    
Log.i(TAG, "${list2.none { it % 2 == 0 }}") // false
    
Log.i(TAG, "${list2.count { it % 2 == 0 }}") //3
    
Log.i(TAG, "${list2.reduce { total, next -> total + next }}")// 21

3. 过滤类

  • take —— 返回前n个元素
  • filter —— 过滤所有满足条件的元素
  • filterNot —— 过滤所有不满足条件的元素
  • filterNotNull —— 过滤所有非null元素
val list3 = listOf(1, 2, 3, 4, 5, 6)
    
Log.i(TAG, "返回前n个元素 => ${list3.take(2)}") // [1, 2]
    
Log.i(TAG, "过滤所有满足条件的元素 => ${list3.filter { it % 2 == 0 }}") // [2, 4, 6]
    
Log.i(TAG, "过滤所有不满足条件的元素 => ${list3.filterNot { it % 2 == 0 }}") // [1, 3, 5]
    
Log.i(TAG, "过滤所有不满足条件的元素 => ${list3.filterNotNull()}") // [1, 2, 3, 4, 5, 6]

4. 转换类

  • map —— 转换成另一个集合;
  • mapIndexed —— 除了转换成另一个集合,还可以拿到Index(下标);
  • mapNotNull —— 执行转换前过滤掉为NULL的元素
  • flatMap —— 自定义逻辑合并两个集合;
  • groupBy —— 按照某个条件分组,返回Map;
val list4 = listOf(1, 2, 3, 4, 5, 6)
Log.i(TAG, "${list4.map { it * 2 }}") //[2, 4, 6, 8, 10, 12]
    
Log.i(TAG, "${list4.mapIndexed { index, it -> index * it }}") //[0, 2, 6, 12, 20, 30]
    
Log.i(TAG, "${list4.mapNotNull { it * 2 }}") //[2, 4, 6, 8, 10, 12]
    
Log.i(TAG, "${list4.flatMap { listOf(it, it + 1) }}") //[1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7]
    
Log.i(TAG, "${list4.groupBy { if (it % 2 == 0) "even" else "odd" }}") //{odd=[1, 3, 5], even=[2, 4, 6]}

5. 排序类

  • reversed —— 反序
  • sorted —— 升序
  • sortedBy —— 自定义排序
  • sortedDescending —— 降序
val list5 = listOf(6, 2, 4, 3, 5, 1)
Log.i(TAG, "反序 => ${list5.reversed()}") //[1, 5, 3, 4, 2, 6]
    
Log.i(TAG, "升序 => ${list5.sorted()}") //[1, 2, 3, 4, 5, 6]
    
Log.i(TAG, "自定义排序 => ${list5.sortedBy { it % 2 }}") //[6, 2, 4, 3, 5, 1]
    
Log.i(TAG, "降序 => ${list5.sortedDescending()}") //[6, 5, 4, 3, 2, 1]

版权声明:本文为weixin_42169702原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。