当前位置: 首页 > 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]

相关文章:

Kotlin中常见的List使用

文章目录 1.filter2.map3.count4.first,last5.any,all,none6.find&#xff0c;findLast7.indexOf()和lastIndexOf()查找元素下标8.Slice切片9.Take()和drop()获取指定长度 1.filter filter 就像其本意一样&#xff0c;可以通过 filter 对 Kotlin list 进行过滤。 fun main() …...

汽车电子 -- 车载ADAS之LCA(变道辅助系统)

相关法规文件: LCA: ISO 17387-2008 Intelligent transport systems — Lane change decision aid systems 一、变道辅助系统 LCA &#xff08;Lane Change Assist&#xff09; LCA 系统&#xff08;变道辅助系统&#xff09;监测后方相邻车道区域&#xff0c;如果有车辆在后…...

MongoDB——golang操作(链接,CURD,聚合)

MongoDB golang操作 中文文档 链接 package mainimport ("context""fmt""log""go.mongodb.org/mongo-driver/mongo""go.mongodb.org/mongo-driver/mongo/options" )func main() {// 设置客户端连接配置clientOptions : o…...

音视频项目—基于FFmpeg和SDL的音视频播放器解析(十八)

介绍 在本系列&#xff0c;我打算花大篇幅讲解我的 gitee 项目音视频播放器&#xff0c;在这个项目&#xff0c;您可以学到音视频解封装&#xff0c;解码&#xff0c;SDL渲染相关的知识。您对源代码感兴趣的话&#xff0c;请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…...

绿色能源守护者:光伏运维无人机

随着我国太阳能光伏产业被纳入战略性新兴产业&#xff0c;光伏发电成为实现“双碳”目标的关键之一。在政策支持下&#xff0c;光伏产业维持高速发展&#xff0c;为迎接“碳达峰、碳中和”大势注入了强大动力。在这一背景下&#xff0c;复亚智能与安徽一家光伏企业合作&#xf…...

i已学赋能智慧教育时代的幼儿教育

伴随“教育数字化战略行动”的深入开展,智慧教育正式成为国家战略。智慧教育延伸至家校社教育的每个阶段。当前,为适应智慧教育发展趋势,我国制定了《中国教育现代化2035》《教育部关于加强“三个课堂”应用的指导意见》《教育信息化2.0行动计划》等文件。幼儿作为智慧教育、智…...

[栈迁移+ret滑梯]gyctf_2020_borrowstack

题目来源buuctf——gyctf_2020_borrowstack 参考链接https://www.shawroot.cc/2097.html 题目信息ubuntu16、64位 第一个read仅溢出一个机器字长&#xff0c;需要栈迁移 解题步骤栈偏移到全局变量bank中&#xff0c;ret2libcgadget 关键步骤 ret滑梯 第二个payload需要添…...

PTA:用函数实现从数列中删除一个数

题目&#xff1a; 编写一个函数实现&#xff1a;删除n个元素的数列中下标为k的元素。 测试程序将输入一个下标值&#xff0c;调用本函数&#xff0c;删除数列{1,4,13,9,6,11,18,14,25}中该下标位置的元素&#xff0c;并输出删除后的数列。 函数接口定义&#xff1a; void de…...

C++设计模式之工厂模式(中)——工厂模式

工厂模式 工厂模式介绍示例示例使用运行结果工厂模式与简单工厂模式区别 工厂模式 工厂模式在简单工厂模式的基础之上进行了改进。当需要生产的产品种类增加&#xff0c;可以通过新增子类工厂来生产&#xff0c;没有破坏程序设计原则中的开放封闭原则。 介绍 工厂模式先抽象…...

关于el-table的二次封装及使用,支持自定义列内容

关于el-table的二次封装及使用 table组件 <template><el-table ref"tableComRef" :data"tableData" border style"width: 100%"><el-table-column v-if"tableHeaderList[0]?.type selection" type"selection&…...

【Vue】Vue3 配置全局 scss 变量

variables.scss $color: #0c8ce9;vite.config.ts // 全局css变量css: {preprocessorOptions: {scss: {additionalData: import "/styles/variables.scss";,},},},.vue 文件使用...

C语言—二维数组

一、二维数组的创建 int arr[3][4];char arr[3][5];double arr[2][4]; 数组创建&#xff1a;“[ ]”中要给一个常量&#xff0c;不能使用变量 二、二维数组的初始化 int arr[3][4]{1,2,3,4};int arr[3][4]{{1,2},{4,5}};int arr[][4]{{2,3},{4,5}}; 前面的为行&#xff0c…...

GUI加分游戏

需求目标 这个简单的游戏窗口包含一个得分标签和一个按钮。每次点击按钮时&#xff0c;得分增加1&#xff0c;并更新得分标签的显示。 效果 源码 /*** author lwh* date 2023/11/28* description 这个简单的游戏窗口包含一个得分标签和一个按钮。每次点击按钮时&#xff0c;…...

多线程的重要资料-信号量

(1)https://www.cnblogs.com/ike_li/p/8984186.html (2)C#关于AutoResetEvent的使用介绍 | 康瑞部落 (3)AutoResetEvent用法(一)_autoresetevent 的用法-CSDN博客 (4)c++ - Is there an easy way to implement AutoResetEvent in C++0x? - Stack Overflow (5)...

区块链相关技术、概念以及技术实现过程中的一些关键问题 Smart Contracts and Blockchains

作者:禅与计算机程序设计艺术 1.简介 2017年底,区块链已经成为众多投资人和技术人员最关注的话题之一。随着现实世界的不断复杂化、数字货币的流行以及IoT设备的普及,加密数字货币市场正变得越来越活跃。由于区块链具有去中心化、不可篡改、透明性、高并发等特点,使其在金…...

黑马点评Redis笔记

黑马点评Redis笔记 Redis基础篇&#xff1a;https://cyborg2077.github.io/2022/10/21/RedisBasic/ Redis实战篇&#xff1a;https://cyborg2077.github.io/2022/10/22/RedisPractice/ 一、手机号验证码注册登录 RandomUtil 生成定长随机数列 String code RandomUtil.ran…...

MX6ULL学习笔记 (一)交叉工具链的安装

前言&#xff1a; ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译&#xff0c;编译就需要编译 器&#xff0c;Ubuntu 自带的 gcc 编译器是针对 X86 架构的&#xff01;而我们现在要编译的是 ARM 架构的代码&#xff0c;因为我们编译的代码是需要烧写到ARM板子…...

uni-app中的onLoad不执行

问题 想在onLoad()中发请求获取数据&#xff0c;却发现onLoad()根本不会执行 原因 这个页面没有在pages.json中配置&#xff0c;不属于uni-app中的页面 uni-app的文档也做出了说明&#xff0c;组件是无法使用页面级的onLoad等生命周期的 解决方法 uni-app除支持页面生命周…...

EFAK-v3.0.1版部署与使用

一、前言 EFAK&#xff08;(Eagle For Apache Kafka&#xff0c;以前称为Kafka Eagle&#xff09;用于在使用 Topic 的情况下监控 Kafka 集群。包含Offset 的产生、Lag的变化、Partition的分布、Owner、Topic的创建以及修改的时间等信息。 二、环境&安装包 官方下载连接E…...

股票技术从初级到高级,从实盘进阶到摩尔缠论

一、教程描述 摩尔缠论是什么&#xff1f;一个伟大的缠论分支体系&#xff0c;由顶尖高手创立的缠论分支&#xff0c;这个顶尖高手&#xff0c;江湖上的代号为摩尔&#xff0c;可能是一个人&#xff0c;或者是一群人。摩尔缠论&#xff0c;基于缠论的核心思想与基础理论&#…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...