当前位置: 首页 > news >正文

Kotlin中常见的List使用

文章目录

    • 1.filter
    • 2.map
    • 3.count
    • 4.first,last
    • 5.any,all,none
    • 6.find,findLast
    • 7.indexOf()和lastIndexOf()查找元素下标
    • 8.Slice切片
    • 9.Take()和drop()获取指定长度

1.filter

filter 就像其本意一样,可以通过 filter 对 Kotlin list 进行过滤。

fun main()
{val numbers = listOf(1, -2, 3, -4, 5, -6)val positives = numbers.filter { x -> x > 0 }val negatives = numbers.filter { it < 0 }      // 这里我们可以使用 it println("positive values: ${positives}")        // 打印 positive values: [1, 3, 5]println("negative values: ${negatives}")        // 打印 positive values: [-2, -4, -6]
}

2.map

map扩展函数能使我们能够变化应用于集合中的所有元素

fun main()
{val numbers = listOf(1, -2, 3, -4, 5, -6)     val doubled = numbers.map { x -> x * 2 }val tripled = numbers.map { it * 3 }          println("doubled values: ${doubled}")       // 打印 doubled values: [2, -4, 6, -8, 10, -12]println("tripled values: ${tripled}")       // 打印 tripled values: [3, -6, 9, -12, 15, -18]
}

3.count

count函数返回集合中的元素总数或与给定条件匹配的元素数。

fun main()
{val numbers = listOf(1, -2, 3, -4, 5, -6)val totalCount = numbers.count() //集合中的元素总数                    val evenCount = numbers.count { it % 2 == 0 }  //与给定条件匹配的元素数      println("totalCount: ${totalCount}")    // 打印 totalCount: 6println("evenCount: ${evenCount}")      // 打印 evenCount: 3
}

4.first,last

返回列表中第一个或最后一个元素的值。

fun main()
{val numbers = listOf(1, -2, 3, -4, 5, -6)            val first = numbers.first()                          val last = numbers.last()                            val firstEven = numbers.first { it % 2 == 0 }        val lastOdd = numbers.last { it % 2 != 0 }                  println("first element: ${first}")          // 打印 first element: 1println("last element: ${last}")            // 打印 last element: -6println("first Even element: ${firstEven}") // first Even element: -2println("last Odd element: ${lastOdd}")     // last Odd element: 5
}

5.any,all,none

这些函数检查是否存在与给定条件匹配的集合元素,并返回布尔值。
any:集合中存有一个或多个元素符合条件时返回true,否则返回false
all:当且仅当该集合中所有元素都满足条件时,返回true;否则都返回false。
node:如果集合中没有符合匹配条件的元素,返回true,否则返回false

fun main()
{val numbers = listOf(1, -2, 3, -4, 5, -6)            val anyNegative = numbers.any { it < 0 }             val anyGT6 = numbers.any { it > 6 }                  val allEven = numbers.all { it % 2 == 0 }            val allLess6 = numbers.all { it < 6 }  val allEven = numbers.none { it % 2 == 1 }           val allLess6 = numbers.none { it > 6 }               println("any negative elements: ${anyNegative}")    // 打印 any negative elements: trueprintln("any elements larger than six: ${anyGT6}")  // any elements larger than six: falseprintln("是否所有元素都是双数:${allEven}")           // 是否所有元素都是双数:falseprintln("是否所有元素都小于6: ${allLess6}")           // 是否所有元素都小于6: true
}

6.find,findLast

find和findLast函数返回与给定条件匹配的第一个或最后一个集合元素。如果没有这样的元素,函数将返回null

fun main(string: Array<String>) {val test = listOf("one", "two", "three", "four", "five", "six")//从开头查询,字符长度大3的元素println(test.find {it.length > 2})println(test.findLast { it.length > 3 })
}
//输出
one
five

7.indexOf()和lastIndexOf()查找元素下标

在列表中,都可以使用indexOf() 或者lastIndexOf() 查询到元素在集合中的位置。
如果集合中没有该对象,则返回-1。

fun main(string: Array<String>) {val numbers = listOf(1, 2, 3, 4, 2, 5)println(numbers.indexOf(2))println(numbers.lastIndexOf(2))
}
//输出
1
4

还有一种扩展方法

  • indexOfFirst()返回与关键字匹配的第一个元素的索引,如果没有此类元素,则返回 -1。
  • indexOfLast() 返回与谓词匹配的最后一个元素的索引,如果没有此类元素,则返回 -1。
fun main(string: Array<String>) {val numbers = mutableListOf("A", "B", "B", "C", "C", "A", "C")println(numbers.indexOfFirst { it == "A" })println(numbers.indexOfLast { it == "A" })
}
//输出
0
5

8.Slice切片

该函数返回具有给定索引的集合元素列表。

fun main(string: Array<String>) {//我们得到一个字符串数组val test = listOf("A", "B", "C", "D", "E", "F", "G")val temp = test.slice(listOf(1,4,3))println(temp)
}
//输出
[B, E, D]

我们注意到,截取后的集合,也是按照我们传入的下标顺序进行获取的。
索引既可以是作为集合的形式传入,也可以是[区间]

fun main(string: Array<String>) {//我们得到一个字符串数组val test = listOf("A", "B", "C", "D", "E", "F", "G")//截取 下标从2 到4的 集合集val temp = test.slice(2..4)println(temp)//截取 步长为2的 指定区间的参数val temp1 = test.slice(2..4 step 2)println(temp1)
}
//输出
[C, D, E]
[C, E]

9.Take()和drop()获取指定长度

slice在使用的过程中可能会越界。
而take 和drop截取的时候不会产生越界的问题。

  • take :从头开始获取指定长度的元素,如果原始集合长度不够,则返回整个集合对象。
  • drop:从指引位置开始截取到集合尾部。
fun main(string: Array<String>) {//我们得到一个字符串数组val test = listOf("A", "B", "C", "D", "E", "F", "G")//从头截取val temp = test.take(5)println(temp)//从下标2的元素开始, 包括下标2的元素本身val temp1 = test.drop(2)println(temp1)
}
//输出
[A, B, C, D, E]
[C, D, E, F, G]
http://www.lryc.cn/news/246969.html

相关文章:

  • 汽车电子 -- 车载ADAS之LCA(变道辅助系统)
  • MongoDB——golang操作(链接,CURD,聚合)
  • 音视频项目—基于FFmpeg和SDL的音视频播放器解析(十八)
  • 绿色能源守护者:光伏运维无人机
  • i已学赋能智慧教育时代的幼儿教育
  • [栈迁移+ret滑梯]gyctf_2020_borrowstack
  • PTA:用函数实现从数列中删除一个数
  • C++设计模式之工厂模式(中)——工厂模式
  • 关于el-table的二次封装及使用,支持自定义列内容
  • 【Vue】Vue3 配置全局 scss 变量
  • C语言—二维数组
  • GUI加分游戏
  • 多线程的重要资料-信号量
  • 区块链相关技术、概念以及技术实现过程中的一些关键问题 Smart Contracts and Blockchains
  • 黑马点评Redis笔记
  • MX6ULL学习笔记 (一)交叉工具链的安装
  • uni-app中的onLoad不执行
  • EFAK-v3.0.1版部署与使用
  • 股票技术从初级到高级,从实盘进阶到摩尔缠论
  • 力扣105. 从前序与中序遍历序列构造二叉树
  • Windows环境下的JDK安装与环境配置
  • 【密码学引论】Hash密码
  • 【传智杯】儒略历、评委打分、萝卜数据库题解
  • java基础-IO
  • Java变量理解
  • 西南科技大学信号与系统A实验二(信号频谱分析)
  • C++-youtube cherno C++视频的一些知识点
  • sed命令
  • 【经验分享】开发问题记录总结(持续更新)
  • MySQL导出数据库中每个表前 3000 条数据