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

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...