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

kotlin first/last/indexOf/elementAt

kotlin 中

first 是取集合元素中第一个元素

last 是取集合元素中最后一个元素

indexOf 根据元素寻找下标,默认是第一个

elementAt 根据下标找元素

下面写一个demo 说明下他们几个的使用

        val list = listOf("A", "D", "A", "B", "E", "C", "D", "C", "E", "F")//打印集合中的第一个元素Log.d("=======first", list.first().toString()) //打印结果是A//符合条件的第一个元素,根据谓词匹配Log.d("=======first{}", list.first { it =="D"})//打印结果是D//打印集合中的最后一个元素Log.d("=======last", list.last().toString()) //打印结果是F//符合条件的最后一个元素,根据谓词匹配Log.d("=======last{}", list.last { it =="D"})//打印结果是D//根据元素寻找下标,默认是第一个Log.d("=======indexOf", list.indexOf("D").toString()) //打印结果是1//集合中元素第一个是D的下标Log.d("=======indexOfFirst", list.indexOfFirst { it == "D" }.toString())//打印结果是1//集合中元素最后一个是D的下标Log.d("=======indexOfLast", list.indexOfLast { it == "D" }.toString())//打印结果是6//根据下标找元素Log.d("=======last", list.elementAt(3).toString()) //打印结果是B

上面的根据谓词匹配的demo 不明显下面重新写一个如下

        val numbers = listOf("one", "two", "three", "four", "five")Log.d("======first", numbers.first { it.length > 3 }) //打印结果threeLog.d("======last", numbers.last { it.length > 3 }) //打印结果five

有时候判断条件集合中没有的时候就会报错如下

val numbers = listOf("one", "two", "three", "four", "five")
Log.d("======first", numbers.first { it.length > 6 }) //报错 java.util.NoSuchElementException

这个时候可以使用

firstOrNull 判断条件符合返回元素如果不符合返回null 这样就不会报错了

lastOrNull 判断条件符合返回元素如果不符合返回null 这样就不会报错了

        Log.d("======first", numbers.firstOrNull { it.length>6 }.toString()) //打印结果nullLog.d("======last", numbers.lastOrNull { it.length>6  }.toString()) //打印结果null

elementAt 也有这种情况当给出的下标集合中不存在的时候也是会报错的比如

例如下面的就会报错

val numbers = listOf("one", "two", "three", "four", "five")
Log.d("======first", numbers.elementAt(8)) //报错

这种时候可以使用elementAtOrNull

elementAtOrNull的作用判断条件符合返回元素,不符合返回null

        val numbers = listOf("one", "two", "three", "four", "five")Log.d("======first", numbers.elementAtOrNull(8).toString()) 

还有一个elementAtOrElse 还接受一个 lambda 表达式,该表达式能将一个 Int 参数映射为一个集合元素类型的实例。 当使用一个越界位置来调用时,elementAtOrElse() 返回对给定值调用该 lambda 表达式的结果。

       val numbers = listOf("one", "two", "three", "four", "five")Log.d("======first", numbers.elementAtOrElse(5) { index -> "The value for index $index is undefined"})

打印结果:The value for index 5 is undefined

相关文章:

kotlin first/last/indexOf/elementAt

kotlin 中 first 是取集合元素中第一个元素 last 是取集合元素中最后一个元素 indexOf 根据元素寻找下标,默认是第一个 elementAt 根据下标找元素 下面写一个demo 说明下他们几个的使用 val list listOf("A", "D", "A", "…...

计算机网络——网络中要解决的问题

1. 从网络管理的角度看 1.1 配置管理 追踪所有部署的硬件和软件资源,包括设备配置和软件版本。 1.2 故障管理​​​​​ 监控设备的运行状态,以确保所有组件都正常工作,以及快速响应和修复任何故障。 1.3 计费管理 监控资源消耗并进行计费…...

初识STL

目录 ​💡STL 💡STL六大组件 💡三大组件介绍 💡容器 💡算法 💡迭代器 💡示例 💡STL C STL(标准模板库)是一套功能强大的 C 模板类,提供了…...

程序员副业之无人直播助眠

介绍和概览 大家好,我是小黑,本文给大家介绍一个比较轻松简单的副业,无人直播助眠副业。 这个项目的核心就是通过直播一些助眠素材来赚钱。比如你可以放一些舒缓的雨声之类的,吸引观众进来。然后,咱们可以挂个小程序…...

imazing破解版百度云2.17.3(附激活许可证下载)

iMazing是一款强大的 iOS 设备管理软件,不管是 iPhone、iPad 或 iPod Touch 设备,只要将 iOS 设备连接到计算机,就可以处理不同类型的数据。 iPhone 和 iPad 备份 借助 iMazing 的独有 iOS 备份技术(无线、隐私和自动&#xff09…...

VS+QT五子棋游戏开发

1、首先安装好VS软件和QT库,将其配置好,具体不在此展开说明。 2、文件结构如下图: 3、绘制棋盘代码,如下: void Qwzq::paintEvent(QPaintEvent* event) {QPainter painter(this);painter.setRenderHint(QPainter::An…...

SpringBoot中动态注册接口

1. 说明 接口注册,使用RequestMappingHandlerMapping来实现mybatis中动态执行sql使用github上的SqlMapper工具类实现 2. 核心代码片段 以下代码为spring动态注册接口代码示例 Autowired private RequestMappingHandlerMapping requestMappingHandlerMapping;publ…...

CSS 实现两个圆圈重叠部分颜色不同

这是期望实现的效果,由图可知,圆圈底图透明度是0.4,左侧要求重叠部分透明度是0.7,所以不能通过简单的透明度叠加来实现最右侧的效果。 这就需要另外新建一个图层来叠加在两个圆圈重叠上方。 直接看代码 .circle_hight {width: 1…...

【数据库系统概念】第7-14章集合

文章目录 第七章 数据库设计和E-R模型(重点!!!)~~7.1 设计过程概览(了解)~~7.1.1 设计阶段7.1.2 设计选择 7.2 实体-联系模型(重点掌握)7.2.1 实体集7.2.2 联系集联系集的…...

Kibana

Kibana是一个针对Elastic Search的开源分析及可视化的平台,使用kibana可以查询、查看并与存储在ES索引的数据进行交互操作,可以理解为一个客户端的工具,比如mysql和navicat。 使用kibana能执行高级的数据分析,并能以图表、表格和地…...

C#使用 OpenHardwareMonitor获取CPU或显卡温度、使用率、时钟频率相关方式

C# 去获取电脑相关的基础信息,还是需要借助 外部的库,我这边尝试了自己去实现它 网上有一些信息,但不太完整,都比较零碎,这边尽量将代码完整的去展示出来 OpenHardwareMonitor获取CPU的温度和频率需要管理员权限 在没…...

K8S--- volumesvolumeMount

一、Volume 简介 在容器当中的磁盘文件(on-disk file )是短暂的(ephemeral),这会对重要的应用程序或者数据产生一些问题。当容器崩溃或停止时,会出现一个问题,即容器状态不会被保存,因此在容器生命周期内被创建或者修改的文件都将丢失。在容器崩溃期间,kubelet会以干净状…...

AntV-G6 -- 将G6图表应用到项目中

1. 效果图 2. 安装依赖 npm install --save antv/g6 3. 代码 import { useEffect } from alipay/bigfish/react; import G6 from antv/g6;const data {id: root,label: 利息收入,subLabel: 3,283.456,ratio: 3,children: [{id: child-a,label: 平均利息,subLabel: 9%,ratio:…...

第二百五十回

文章目录 1. 概念介绍2. 使用方法2.1 简单用法2.2 自定义用法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"三方包open_settings"相关的内容,本章回中将介绍另外一个三方包:bluetooth_enable_fork.闲话休提,让我们一起Talk Flu…...

如何把硬盘(分区)一分为二?重装系统的小伙伴不可不看

注意事项:本教程操作不当会导致数据丢失 请谨慎操作 请谨慎操作 请谨慎操作 前言 相信各位小伙伴都会切土豆吧,本教程就是教大家如何切土豆切得好的教程。 啊哈哈哈,开玩笑的。 比如你有一个D盘是200GB,想要把它变成两个100G…...

【AI视野·今日NLP 自然语言处理论文速览 第六十六期】Tue, 31 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 31 Oct 2023 (showing first 100 of 141 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers The Eval4NLP 2023 Shared Task on Prompting Large Language Models a…...

解决Canvas画图清晰度问题

最近在开发Web端远程桌面的时候遇到的一个问题,解决记录一下,分享给各位有需要用到的朋友。 先吹下水:远程桌面的连接我们是通过Websocket连接后,后端不断返回远程端的界面二进制数据流,我接收到之后转为图像&#xf…...

zookeeper经典应用场景之分布式锁

1. 什么是分布式锁 在单体的应用开发场景中涉及并发同步的时候,大家往往采用Synchronized(同步)或者其他同一个JVM内Lock机制来解决多线程间的同步问题。在分布式集群工作的开发场景中,就需要一种更加高级的锁机制来处理跨机器的进…...

红队专题-Web安全/渗透测试-文件上传/下载/包含

文件上传/下载/包含 招募六边形战士队员利用目录穿越反弹SHELL实战测试2.2 提交报文修改检测3.2 文件内容检测绕过完整文件结构 检测 第四章:解析漏洞第一节 常见解析漏洞iis/nginx php fastcgi 取值错误 解析漏洞 (配置错误)nginx 文件名逻…...

安装阿里云CLI之配置阿里云凭证信息

有时候需要再主机上通过 OpenAPI 的调用访问阿里云,并完成控制,此时就需要在服务器上安装阿里云CLI,并完成账号的设置。 1. 登录阿里云创建账号 1.1 点击阿里云头像 ——》 控制访问 ——》创建一个拥有DNS权限的用户 这个用户不用太多权限…...

为什么顶尖考古团队已弃用传统文献管理?NotebookLM实现遗址报告生成效率提升300%的底层逻辑

更多请点击: https://intelliparadigm.com 第一章:NotebookLM考古学研究辅助的范式革命 NotebookLM 作为 Google 推出的基于文档理解的 AI 助手,正悄然重塑考古学研究的信息处理范式。传统考古工作依赖大量手写笔记、田野报告、碳十四测年数…...

怎么快速降AI率?答辩前1周从60%降到10%以内实操指南!

怎么快速降AI率?答辩前1周从60%降到10%以内实操指南! 答辩前 1 周拿到 AI 率 65% 报告,是什么具体场景? 周一早上 9 点。我硕士答辩定在下周一上午 9 点——还有整整 7 天。导师周日晚发消息:「答辩前再送一次维普看…...

紧急预警:2024Q3起PlayAI将下线v2.1旧版翻译协议!迁移倒计时47天,5类遗留系统升级避坑手册

更多请点击: https://intelliparadigm.com 第一章:PlayAI多语种同步翻译功能详解 PlayAI 的多语种同步翻译功能基于端到端神经机器翻译(NMT)架构与实时语音流处理引擎深度融合,支持中、英、日、韩、法、西、德、俄等…...

面试鸭:一站式面试题库解决方案,助你轻松备战技术面试

面试鸭:一站式面试题库解决方案,助你轻松备战技术面试 【免费下载链接】mianshiya-public 持续维护的企业面试题库网站,帮你拿到满意 offer!⭐️ 2026年最新Java面试题、前端面试题、AI大模型面试题、AI Agent面试题、RAG面试题、…...

浏览器扩展开发实战:光标交互防火墙的设计与实现

1. 项目概述与核心价值最近在折腾浏览器插件开发,偶然在GitHub上看到了一个名为“Raidu Firewall Cursor Extension”的项目。光看这个名字,就让我这个对网络安全和效率工具都感兴趣的老码农眼前一亮。这玩意儿本质上是一个浏览器扩展,但它把…...

告别内网穿透:OpenWrt软路由IPv6配置实战与DDNS部署指南

1. 为什么我们需要IPv6? 最近几年,越来越多的朋友发现家里的宽带已经拿不到IPv4公网地址了。我自己用的移动宽带就是这样,光猫改桥接后用软路由拨号,拿到的永远是个100开头的内网IP。打电话给运营商,客服很客气地告诉我…...

客户要求改iServer访问路径?别慌,手把手教你修改Tomcat配置+Nginx代理(附避坑点)

深度解析iServer访问路径修改:从Tomcat配置到Nginx代理的全链路实践 当客户提出"需要将iServer访问地址调整为特定路径格式"的需求时,许多运维工程师的第一反应可能是简单修改Nginx配置。但实际操作中会发现,仅靠代理层调整会导致…...

别再手动导数据了!用Python的pandas+pyarrow,3行代码搞定Parquet转JSON

3行代码解锁数据自由:用Python极简实现Parquet到JSON的优雅转换 数据工程师的日常总是与格式转换纠缠不清。当你在凌晨两点收到紧急需求:"立刻把数据仓库里50GB的用户行为Parquet文件转成JSON供下游系统调用",是选择打开文档逐行编…...

远程办公总掉线?四大远控软件横测:谁才是“不断连之王”?

远程办公总掉线?四大远控软件横测:谁才是“不断连之王”? 远程办公最怕 “关键时刻掉链子”:写方案写到一半断连、远程运维突然掉线、跨城开会画面卡死…… 连接稳定性早已成为远控软件的核心生命线。本次横测聚焦ToDesk、向日葵、…...

通过审计日志追溯APIKey使用情况保障安全

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过审计日志追溯APIKey使用情况保障安全 效果展示类,从安全管理角度出发,说明如何在Taotoken控制台查看AP…...