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

kotlin filter 过滤集合(filterIndexed,filterNot,filterIsInstance,filterNotNull)

filter 在kotlin中一个高阶函数属于过滤集合中其中之一

filter作用:

用于根据提供的谓词函数过滤出集合中的元素,注意谓词只能检查元素的值,谓词可以理解为判断条件

举例:检查集合中长度大于3的元素

val numbers = listOf("one", "two", "three", "four")
val langThan3 = numbers.filter { it.length>3 }
// 打印结果 [three, four]
Log.d("=======langThan3", langThan3.toString())

filterIndexed

如果想在过滤中使用元素在集合中的位置,应该使用 filterIndexed()。它接受一个带有两个参数的谓词:元素的索引和元素的值。

举例:检查长度小于5且不是第一个的元素

        val numbers = listOf("one", "two", "three", "four")val filteredIdx = numbers.filterIndexed { index, s -> (index != 0) && (s.length < 5)  }
//         打印结果[two, four]Log.d("=======filteredIdx", filteredIdx.toString())

filteredNot

filteredNot :否定条件来过滤集合

举例:检查长度不小于3的元素

        val numbers = listOf("one", "two", "three", "four")val filteredNot = numbers.filterNot { it.length <= 3 }//打印结果 [three, four]Log.d("=======filteredNot", filteredNot.toString())

filterIsInstance

filterIsInstance() 返回给定类型的集合元素。在一个 List<Any> 上被调用时,filterIsInstance<T>() 返回一个 List<T>, 从而让你能够在集合元素上调用 T 类型的函数。

举例:过滤集合中int,类型,String 类型

        val numbers = listOf(null, 1, "two", 3.0, "four")numbers.filterIsInstance<Int>().forEach {// 打印结果是1Log.d("=======int元素", it.toString())}numbers.filterIsInstance<String>().forEach {// 打印结果是two, fourLog.d("=======String元素", it)}

filterNotNull

filterNotNull() 返回所有的非空元素

val numbers = listOf(null, "one", "two", null)numbers.filterNotNull().forEach {// 打印结果 one twoLog.d("=======元素", it)}

相关文章:

  • 【GO】如何用 Golang 的 os/exec 执行 pipe 替换文件
  • SOFA Framework源代码及插件Win11编译开发环境配置
  • 数据库定义和操作语句的重要语法
  • 分布式系统架构设计之分布式缓存技术选型
  • Java实战项目三:图书借阅系统
  • 新版Edge卸载
  • spring Security源码讲解-WebSecurityConfigurerAdapter
  • HarmonyOS4.0系统性深入开发14AbilityStage组件容器
  • gookit/color - Go语言命令行色彩使用库教程
  • sql:定时执行存储过程(嵌套存储过程、使用游标)
  • 算法训练营第三十天|332.重新安排行程 51. N皇后 37. 解数独
  • 202402读书笔记|《当你老了》——灰蒙曙光比爱情温柔,清晨露珠比希望更可爱
  • 如何实现服务器主动向客户端推送实时数据
  • CSS尺寸单位详解(rpx、px、pt、em、rem、%、vh、vw的区别)
  • pod 基础 2
  • 自己简单写的 事件订阅机制
  • Apache的基本使用
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • ES10 特性的完整指南
  • ES6系列(二)变量的解构赋值
  • Java程序员幽默爆笑锦集
  • Linux Process Manage
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • springboot_database项目介绍
  • WePY 在小程序性能调优上做出的探究
  • 阿里云前端周刊 - 第 26 期
  • 欢迎参加第二届中国游戏开发者大会
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 码农张的Bug人生 - 初来乍到
  • 深度学习入门:10门免费线上课程推荐
  • 通过npm或yarn自动生成vue组件
  • 再次简单明了总结flex布局,一看就懂...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (转)菜鸟学数据库(三)——存储过程
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net 设置默认首页
  • .NET 事件模型教程(二)
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET企业级应用架构设计系列之开场白
  • [<MySQL优化总结>]
  • [2010-8-30]
  • [BUG] Authentication Error
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C#]winform部署PaddleOCRV3推理模型
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]
  • [Head First设计模式]策略模式
  • [HTML]Web前端开发技术12(HTML5、CSS3、JavaScript )——喵喵画网页