当前位置: 首页 > 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;基于缠论的核心思想与基础理论&#…...

RGBW色彩转换器:嵌入式系统高保真白光增强方案

1. RGBW色彩转换器技术解析&#xff1a;面向嵌入式显示系统的高保真白光增强方案1.1 工程背景与设计动因在LED显示与智能照明嵌入式系统中&#xff0c;RGB三色LED驱动已成主流&#xff0c;但其在高亮度白光输出场景下存在固有缺陷&#xff1a;当需呈现高亮度中性白&#xff08;…...

Golang Web 前后端分离企业级后台开发项目计划书V2.0模型代码

Golang Web 前后端分离企业级后台开发项目计划书V2.0模型代码 rbac.go代码 package modelimport ("time""gorm.io/gorm" )// User 用户表 type User struct {ID int gorm:"primarykey;comment:用户ID"Username string gorm:"type:…...

把 Flask 搬进 ESP,高中生自研嵌入式 Web 框架 MicroFlask !舶

如果有多个供应商&#xff0c;你也可以使用 [[CC-Switch]] 来可视化管理这些API key&#xff0c;以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.cn/i…...

【CANNBot学习周】4.13~4.16入门课程来袭

经历了上一期“CANNBot发布&#xff1a;畅享算子开发新体验”&#xff0c;相信你对解锁智能化昇腾CANN算子开发已经跃跃欲试。 CANNBot学习周入门课程来袭&#xff0c;包含4门从易到难的实操课程&#xff0c;带你从 0 到 1 掌握核心技能&#xff01;课程覆盖Ascend C、PyPTO和…...

基于eNSP的企业级网络规划与高可用性设计实战:从需求分析到配置验证

1. 企业级网络规划的核心挑战与eNSP价值 刚接手公司网络改造项目时&#xff0c;我最头疼的就是如何在纸上方案和真实环境之间架起桥梁。直到接触华为eNSP模拟器&#xff0c;才发现这个神器完美解决了网络工程师的三大痛点&#xff1a; 真实设备价格昂贵的问题被彻底化解。用笔记…...

打造沉浸式智能AI问答助手:Vue + UniApp 全端实战(支持 Markdown/公式/多模态交互)幌

OCP原则 ocp指开闭原则&#xff0c;对扩展开放&#xff0c;对修改关闭。是七大原则中最基本的一个原则。 依赖倒置原则&#xff08;DIP&#xff09; 什么是依赖倒置原则 核心是面向接口编程、面向抽象编程&#xff0c; 不是面向具体编程。 依赖倒置原则的目的 降低耦合度&#…...

从81.7万细胞中解码“语法”:人类发育多组学图谱首次揭示调控序列的硬规则与软约束

论文信息标题&#xff1a;Multiomics and deep learning dissect regulatory syntax in human development期刊/会议&#xff1a;Nature发表时间&#xff1a;25 February 2026论文链接&#xff1a;https://doi.org/10.1038/s41586-026-10326-9从81.7万细胞中解码“语法”&#…...

从一次真实的头像上传功能审计说起:我是如何发现并修复那个差点被利用的‘安全’校验逻辑的

从一次真实的头像上传功能审计说起&#xff1a;我是如何发现并修复那个差点被利用的‘安全’校验逻辑的 那天下午&#xff0c;我正在为一个企业级SaaS平台开发用户头像上传功能。这个功能看似简单——用户上传图片&#xff0c;后端校验后存储。但当我深入代码审计时&#xff0c…...

龙虾白嫖指南,请查收~胃

1. 什么是 Apache SeaTunnel&#xff1f; Apache SeaTunnel 是一个非常易于使用、高性能、支持实时流式和离线批处理的海量数据集成平台。它的目标是解决常见的数据集成问题&#xff0c;如数据源多样性、同步场景复杂性以及资源消耗高的问题。 核心特性 丰富的数据源支持&#…...

Serilog:从结构化日志认知到 .NET 工程落地痛

1. 前言 本文详细介绍如何使用 kylin v10 iso 文件构建出 docker image&#xff0c;docker 版本为 20.10.7。 2. 构建 yum 离线源 2.1. 挂载 ISO 文件 mount Kylin-Server-V10-GFB-Release-030-ARM64.iso /media 2.2. 添加离线 repo 文件 在/etc/yum.repos.d/下创建kylin-local…...