scala的集合性能2

news/2024/12/17 20:36:21/

可变集合\n可变集合允许在原地修改数据,适合需要频繁更新的场景。Scala 的可变集合包括 ArrayBuffer、HashSet和HashMap。

1. ArrayBuffer\nArrayBuffer 是一个可变的动态数组,提供高效的随机访问和添加操作。

import scala.collection.mutable.ArrayBuffer

// 创建ArrayBuffer

val buffer = ArrayBuffer(1, 2, 3, 4)

// 添加元素

buffer += 5

buffer ++= ArrayBuffer(6, 7)

// 删除元素

buffer -= 3

buffer --= ArrayBuffer(4, 5)

// 访问元素

val firstElement = buffer.head // 1

// 映射操作

val doubled = buffer.map(_ * 2) // ArrayBuffer(2, 4, 6, 12)

ArrayBuffer 提供了 +=、++=、-=、--= 等方法,用于动态修改集合内容。

2. HashSet\nHashSet 是一个基于哈希表的可变集合,提供常数时间的插入和查找操作。

import scala.collection.mutable.HashMap

// 创建HashMap

val map = HashMap("a" -> 1, "b" -> 2)

// 添加键值对

map += ("c" -> 3)

map ++= HashMap("d" -> 4, "e" -> 5)

// 删除键值对

map -= "a"

map --= List("b", "c")

// 更新值

map("d") = 6

// 映射操作

val updatedMap = map.map { case (k, v) => (k.toUpperCase, v * 2) } // HashMap(D -> 12, E -> 10)

HashMap 提供了 +=、++=、-=、--=、map 等方法,用于高效管理键值对。

四、集合操作的函数式编程\nScala 的集合框架深度集成了函数式编程的概念,提供了丰富的操作方法。以下是一些常用的函数式操作示例:

1. map\nmap 函数对集合中的每个元素应用给定的函数,返回一个新的集合。”

val numbers = List(1, 2, 3, 4)
val squared = numbers.map(x => x * x) // List(1, 4, 9, 16)

2. filter\nfilter 函数返回一个包含所有满足给定条件的元素的新集合。

val numbers = List(1, 2, 3, 4)

val even = numbers.filter(_ % 2 == 0) // List(2, 4)

3. flatMap\nflatMap 函数将集合中的每个元素映射到一个集合,然后将所有这些集合扁平化成一个集合。

val lists = List(List(1, 2), List(3, 4))

val flattened = lists.flatMap(identity) // List(1, 2, 3, 4)

4. foldLeft 和 foldRight\nfoldLeft 和 foldRight 函数通过将集合中的元素与一个累积器进行结合,生成一个最终结果。

val numbers = List(1, 2, 3, 4)

val sum = numbers.foldLeft(0)(_ + _) //

 10

val product = numbers.foldRight(1)(_ * _) // 24

5. reduceLeft 和 reduceRight

reduceLeft 和 reduceRight 函数类似于 foldLeft 和 foldRight,但它们不会提供初始值。

val numbers = List(1, 2, 3, 4)

val sum = numbers.reduceLeft(_ + _) // 10

val product = numbers.reduceRight(_ * _) // 24


http://www.ppmy.cn/news/1555949.html

相关文章

Golang学习笔记_10——Switch

Golang学习笔记_07——基本类型 Golang学习笔记_08——For循环 Golang学习笔记_09——if条件判断 文章目录 Switch语句1. 基本用法2. 多个表达式匹配同一个case3. 不带表达式的switch(相当于if-else if-else)4. 使用fallthrough关键字 5. Type Switch&am…

【保姆级】Mac如何安装+切换Java环境

本文从如何下载不同版本的JDK,到如何丝滑的切换JDK,以及常见坑坑的处理方法,应有尽有,各位看官走过路过不要错过~~~ 下载⏬ 首先上官网: https://www.oracle.com/ 打不开的话可以使用下面👇这个中文的 https://www.oracle.com/cn/java/technologies/downloads/a…

第六章:反射+设计模式

一、反射 1. 反射 (Reflection) :允许在程序运行状态中,可以获取任意类中的属性和方法,并且可以操作任 意对象内部的属性和方法,这种动态获取类的信息及动态操作对象的属性和方法对应的机制称为 反射机制。 2. 类对象…

〔 MySQL 〕 C接口使用

一、准备工作 确保MySQL服务运行正常下载Connector/C库 二、库文件结构 include目录lib目录 三、验证库文件 示例代码编译命令 四、环境变量设置 五、MySQL接口介绍 初始化MySQL连接数据库 设置默认字符集 发送MySQL命令获取执行结果 获取结果行数获取结果列数获取列名…

爬虫学习案例4

爬取猪八戒网站数据:2024-12-12 使用xpath解析元素,安装依赖库 pip install lxml使用selenium步骤我的上篇博客有提到,这里就不重复了 selenium使用博客导航 # 安装pip install lxml,使用xpath from lxml import etree import time from s…

Redis Java 集成到 Spring Boot

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Redis 📚本系列文章为个人学习笔…

信息化基础知识——电子商务(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 电子商务 大数…

记一次mysql字符集编码问题导致查询时间过长问题

数据表 rm_ic.audit_summary_2024_05_20 该表大概有1200w数据,有个字段为ids 不是唯一的,已建索引 audit_ids_idx create table rm_ic.test1 ( id varchar(19) primary key not null comment id, create_time datetime default CURRENT_TIMESTAMP ); cre…