集合过滤 Filter 操作 | 学习笔记

简介: 快速学习集合过滤 Filter 操作

开发者学堂课程【Scala 核心编程 - 进阶集合过滤 Filter 操作学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9051


集合过滤 Filter 操作


内容介绍:

一、基本介绍

二、应用案例

三、案例演示


一、基本介绍

过滤在开发中非常常见。例如,在 Kafka 时就会用到这种过滤机制,过滤就是将一个集合交给另一个函数,该函数指定哪些数据是需要的,哪些数据是不需要的,这就是 filter

filter:

将符合要求的数据(筛选)放置到新的集合中


二、应用案例

将 val names = List("Alice","Bob", "Nick")集合中首字母为'A'的筛选到新的集合。也就是只有 Alice 会返回到新集合中。

思考:

如果这个使用传统的方式,如何完成?

以下部分代码作为演示说明,在下面的代码逻辑中,仅仅加了一层判断,就是让 item 大于10

def map(f:Int=>Int):List[Int]={

//遍历集合

for(item<){  

if(item>10){    

//遍历后的 item 大于10

list2=list2:+f(item)

}

}

list2

}

另一种判断方法:

在遍历时,用传入的函数来判断,传入的元素是否满足该函数的要求,如果满足则加入新集合,反之,该元素被过滤,另一种判断的写法如下

def map(f:Int=>Int):List[Int]={

//遍历集合

for(item<){  

//将传入的函数作为一个判断条件,如果为真, item 进入 for 循环  

if(f(item)==true){    //此处说明该函数返回为 true 或 false

list2=list2:+item

}

}

list2

}


三、案例演示

object FilterDemo01 {

def main(args : Array [ string]): unit = {

/*

选出首字母为 A 的元素

*/

val names= List("Alice","Bob", "Nick")

val names2= names.filter(startA)

println("names=" + names)

println("names2=" + names2)

}

def startA(str:String: Boolean = {

s.startsWith("A")  

}

}

运行结果为:

names=List(Alice,Bob,Nick)

names2=List(Alice)

相关文章
阿里图标库——批量下载图标
阿里图标库——批量下载图标
1101 2
|
11月前
|
监控 数据库
一线公排系统开发技术规则
一线公排系统开发是一个涉及多个技术领域的综合性工程,旨在通过优化资源分配和激励机制,提升销售团队的工作效率和成员之间的合作动力。以下是对一线公排系统开发的详细解析:
|
前端开发 Java 数据库
一线公排系统开发模式案例
一线公排系统开发整合多领域技术,关注实时性、公平性、灵活性与可扩展性。涉及核心功能设计、数据库架构、技术选型(如Java、Python、React)、稳定性与安全、系统集成及接口设计,同时强调用户体验和易维护性。是一项综合性工程。
|
移动开发 小程序 前端开发
uniapp中uview组件库CircleProgress 圆形进度条丰富的使用方法
uniapp中uview组件库CircleProgress 圆形进度条丰富的使用方法
2041 1
|
程序员 数据处理 Python
Python 中的主要循环结构和迭代方法
在 Python 编程中,循环结构是一种重要的控制流工具,用于重复执行代码块或遍历数据集合。Python 提供了多种循环结构和迭代方法,让程序员能够根据不同的需求选择最合适的方式来处理数据和逻辑。本文将介绍 Python 中的主要循环结构和迭代方法,并提供相应的示例代码。
|
弹性计算 固态存储 数据可视化
阿里云服务器收费价格表(阿里云服务器价格购买价格表)
阿里云服务器收费价格表(阿里云服务器价格购买价格表),2023年阿里云服务器租用费用,轻量应用服务器和云服务器ECS优惠价格表,阿里云轻量应用服务器2核2G3M带宽轻量服务器一年108元,2核4G4M带宽轻量服务器一年297.98元12个月,云服务器ECS包括通用算力型u1、ECS计算型c7、通用型g7和内存型r7均有活动
678 0
Zp
mybatis-plus更新字段的时候设置为null,忽略实体null判断
mybatis-plus更新字段的时候设置为null,忽略实体null判断
Zp
4656 0
mybatis-plus更新字段的时候设置为null,忽略实体null判断
|
存储 运维 安全
无影云桌面和服务器有什么区别?阿里云无影电脑有什么优势?
阿里云推出无影云桌面,云桌面是一种安全高效的云上桌面服务,一般用于企业办公。云桌面支持快速便捷的桌面环境创建、部署、统一管控与运维。企业选择云桌面无需前期传统硬件投资,云桌面可以快速构建安全、高性能、低成本的企业桌面办公体系。云桌面和传统PC、VDI之间的区别:
|
关系型数据库 MySQL 数据库
云起冬季实战营第三期期学习报告——MySQL数据库进阶实战
云起冬季实战营第三期期学习报告——MySQL数据库进阶实战
150 0
云起冬季实战营第三期期学习报告——MySQL数据库进阶实战
|
SQL 关系型数据库 MySQL
MySQL8.0之CTE(公用表表达式)
MySQL8.0 CTE 通用表达式
3699 1