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

掌握Scala数据结构(2)MAP、TUPLE、SET

一、映射 (Map)

(一)不可变映射

1、创建不可变映射

  • 创建不可变映射mp,用键->值的形式
    在这里插入图片描述
  • 创建不可变映射mp,用(键, 值)的形式
    在这里插入图片描述
  • 注意:Map是特质(Scala里的trait,相当于Java里的interface),不能实例化
    在这里插入图片描述

2、遍历不可变映射

  • 利用for循环来实现遍历
    在这里插入图片描述
  • 调用mp.keys的foreach算子实现遍历
    在这里插入图片描述
  • 能否按键修改映射的值?
    在这里插入图片描述

(二)可变映射

1、创建可变映射

  • 创建可变映射mp
    在这里插入图片描述

2、修改可变映射

  • 将键02的值改为man(键02存在,执行修改操作)
    在这里插入图片描述
  • 将键05的值改为belle(键05存在,执行添加操作)
    在这里插入图片描述

3、查询可变映射

  • 查询键02的值,如果没有查到,则返回键02不存在
    在这里插入图片描述
  • 查询键08的值,如果没有查到,则返回键08不存在
    在这里插入图片描述

4、添加元素

  • 查看可变映射当前值
    在这里插入图片描述
  • 用两种方式添加元素
    在这里插入图片描述
  • 因为数组和列表都可以用append方法来添加新元素,我们试一试映射可不可以
    在这里插入图片描述

5、删除元素

  • 删除存在的键 - 07 对应的元素
    在这里插入图片描述
  • 删除不存在的键 - 11 对应的元素,不报错,映射也没有变化
    在这里插入图片描述
  • 试一试能否用remove方法来删除映射的元素
    在这里插入图片描述

二、元组 (Tuple)

(一)定义元组

1、直接赋值定义元组

  • 定义一个元组student(自动推断)
    在这里插入图片描述

2、创建指定长度的元组

  • 定义指定长度的元组,其中Tuple3是一个元组类,代表元组长度为3
    在这里插入图片描述

(二)访问元组

  • 使用方法_1、_2、_3访问元组的元素,与数组和字符串的位置不同,元组的元素下标从1开始。
  • 访问元组的3个元素
    在这里插入图片描述
  • 元组不能像数组或列表那样通过圆括号加下标的方式来访问元素
    在这里插入图片描述
  • 访问元组的第6个元素(不存在的元素),报错
    在这里插入图片描述

(三)迭代元组

  • 直接用for循环遍历元素是不行的
    在这里插入图片描述

  • 使用元组的productIterator()方法产生全部元素构成的迭代器,然后遍历迭代器
    在这里插入图片描述

  • 使用for循环遍历元组生成迭代器
    在这里插入图片描述

(四)元组转为字符串

  • 使用Tuple.toString()方法可将元组全部元素组合成一个字符串

三、集合 (Set)

(一)定义集合

  • 定义一个空的不可变集合set1(Nothing - 一无所有,Scala所有类的子类)
    在这里插入图片描述
  • 定义一个非空的不可变集合set2(Any - 包罗万象,Scala所有类的父类)
    在这里插入图片描述

(二)增减元素

  • 与列表一样,对于不可变集合进行元素的增加和删除实际上会产生一个新集合,原来的集合并没有改变
  • 创建一个不可变集合set
    在这里插入图片描述
  • 添加一个集合不存在的元素 - 100
    在这里插入图片描述
  • 添加一个集合存在的元素1,集合里始终只有一个1(集合具有互异性)
    在这里插入图片描述
  • 当然,2和3两个元素也是加不进去的
    在这里插入图片描述
  • 减去一个存在的元素2
    在这里插入图片描述
  • 减去一个不存在的元素666,没有任何动静
    在这里插入图片描述

(三)集合方法

  • 创建一个集合cities
    在这里插入图片描述

1、获取首元素

在这里插入图片描述

2、获取去首子集合

在这里插入图片描述

课堂练习:删除排前的三个城市

在这里插入图片描述

3、两个集合求并集

  • 利用++运算符或union方法求两个集合的并集
  • 两个集合都有6和2,但是并集里只出现1次
    在这里插入图片描述

4、两个集合求交集

  • 利用.&或.intersect()方法求两个集合的交集
    在这里插入图片描述

5、求集合的最值

  • 利用max和min方法求集合最值
    在这里插入图片描述

6、求集合的总和和平均值

  • 利用sum方法求和
    在这里插入图片描述

7、集合的遍历

  • 利用for循环遍历集合
    在这里插入图片描述

  • 利用遍历算子遍历集合
    在这里插入图片描述

相关文章:

掌握Scala数据结构(2)MAP、TUPLE、SET

一、映射 (Map) (一)不可变映射 1、创建不可变映射 创建不可变映射mp,用键->值的形式 创建不可变映射mp,用(键, 值)的形式 注意:Map是特质(Scala里的trait,相当于Java里的interface&#…...

flutter:文件系统目录、文件读写

参考 参考:老孟 文件存储和网络请求 数据存储 Dart的 IO 库包含了文件读写的相关类,它属于 Dart 语法标准的一部分,所以通过 Dart IO 库,无论是 Dart VM 下的脚本还是 Flutter,都是通过 Dart IO 库来操作文件的。但…...

计算机提示“找不到vcruntime140.dll,无法继续执行代码可”以这样子修复

首先,对于那些不熟悉的人来说,vcruntime140.dll是一个关键文件,用于在Windows操作系统上运行使用C语言编写的大型应用程序。如果你正在运行或安装这样的应用程序,但找不到vcruntime140.dll文件,那么你的应用程序可能无…...

深度学习pytorch实战五:基于ResNet34迁移学习的方法图像分类篇自建花数据集图像分类(5类)超详细代码

1.数据集简介 2.模型相关知识 3.split_data.py——训练集与测试集划分 4.model.py——定义ResNet34网络模型 5.train.py——加载数据集并训练,训练集计算损失值loss,测试集计算accuracy,保存训练好的网络参数 6.predict.py——利用训练好的网…...

Rust in Action笔记 第五章 深入理解数据

如果希望看到f32类型的数转换成整型数字u32类型,需要在unsafe包裹下调用std::mem::transmute(data),因为在安全的Rust语法中没有把整型数据按照bit转换成浮点数据的实现,如果想要看到浮点数的二进制输出(通过{:b})&…...

Cocos creator实现飞机大战空中大战《战击长空》小游戏资源及代码

Cocos creator实现飞机大战空中大战《战击长空》小游戏资源及代码 最近在学习Cocos Creator,作为新手,刚刚开始学习Cocos Creator,刚刚入门,这里记录一下飞机大战小游戏实现。 https://wxaurl.cn/VEgRy2eTMyi 一 安装CocosDashBo…...

2.4 逻辑代数的基本定理

学习目标: 如果我要学习逻辑代数的基本定理,我会采取以下步骤: 1. 学习基本概念:首先,我会花时间了解逻辑代数的基本概念,如逻辑运算符(合取、析取、否定等)、真值表、逻辑等价性等…...

适用于 Linux 的 Windows 子系统wsl文档

参考链接:https://learn.microsoft.com/zh-cn/windows/wsl/ 鸟哥的Linux私房菜:http://cn.linux.vbird.org/ http://cn.linux.vbird.org/linux_basic/linux_basic.php http://cn.linux.vbird.org/linux_server/ 目录 安装列出可用的 Linux 发行版列出已…...

C++特殊类的设计与类型转换

特殊类的设计与类型转换 特殊类的设计请设计一个类,只能在堆上创建对象请设计一个类,只能在栈上创建对象请设计一个类,只能创建一个对象(单例模式) C的类型转换 特殊类的设计 请设计一个类,只能在堆上创建对象 通过new创建的类就…...

如何通过关键词搜索API接口

如果你是一位电商运营者或者是想要进行1688平台产品调研的人员,你可能需要借助API接口来获取你所需要的信息。在这篇文章中,我们将会讨论如何通过关键词搜索API接口获取1688的商品详情。 第一步:获取API接口的授权信息 在使用API接口前&…...

智驾域控新战争打响,谁在抢跑?

智能驾驶域控制器赛道,已经成为了时下最为火热的市场焦点之一。 最近,头部Tier1均胜电子公布了全球首批基于高通Snapdragon Ride第二代芯片平台的智能驾驶域控制器产品nDriveH,在这一赛道中显得格外引人注意。 就在不久之前,均胜…...

Android 13无源码应用去掉无资源ID的按钮

Android Wifionly项目,客户要求去掉谷歌联系人里的 手机联系人按钮 需求分析 无应用源码,只能通过系统侧去修改 首先通过 Android Studio 工具 uiautomatorviewer 获取父控件资源ID chip_group ,然后通过遍历获取子控件去掉目标按钮 --- a/frameworks/base/core/java/andr…...

【SCI征稿】中科院2区(TOP),正刊,SCIEEI双检,进化计算、模糊集和人工神经网络在数据不平衡中应用

【期刊简介】IF:8.0-9.0,JCR1区,中科院2区(TOP) 【检索情况】SCIE&EI 双检,正刊 【数据库收录年份】2004年 【国人占比】22.78%(期刊国际化程度高) 【征稿领域】进化计算、模…...

Android Audio开发——AAudio基础(十五)

AAudio 是一个自 Android O 引入的新的 Android C API。它主要是为需要低延迟的高性能音频应用设计的。应用程序通过直接从流中读取或向流中写入数据来与 AAudio 通信,但它只包含基本的音频输入输出能力。 一、AAudio概述 AAudio 在应用程序和 Android 设备上的音频输入输出之…...

SDK接口远程调试【内网穿透】

文章目录 1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道 4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名 6. 使用固定二级子域名进行访问 转发自cpolar内网穿透的文章:Java支付宝沙箱环境支付&#xff0…...

Mybatis学习笔记二

目录 一、MyBatis的各种查询功能1.1 查询一个实体类对象1.2 查询一个List集合1.3 查询单个数据1.4 查询一条数据为map集合1.5 查询多条数据为map集合1.5.1 方法一:1.5.2 方法二: 二、特殊SQL的执行2.1 模糊查询2.2 批量删除2.3 动态设置表名2.4 添加功能…...

大屏数据可视化开源项目

一、DataGear —— 数据可视化项目 官网:DataGear - 开源免费的数据可视化分析平台 DataGear 是一款开源免费的数据可视化分析平台,数据可视化看板。 功能特性: 1、多种数据源,支持运行时接入任意提供 JDBC 驱动的数据库&#…...

面试经典150题:数组/字符串合集

新专栏&#xff0c;预计两个月写完吧&#xff0c;每天下班回来抽空做几道题。会把做题计划顺序记录下来&#xff0c;如果你有缘&#xff0c;刷到这个开篇序列&#xff0c;那就跟着文章去练题吧。初学者可以慢慢来 88. 合并两个有序数组 void merge(vector<int>& nums…...

Java源文件的执行过程

目录 1.JVM 2.字节码 3.Java源文件执行的过程 4.JIT&#xff08;Just In Time Compilation&#xff09; 5.AOT&#xff08;Ahead Of Time Compilation&#xff09; 6.AOT破坏Java动态性 7.编译型语言与解释型语言 8.Java-编译与解释并存的语言 9.Java和C的相同点与不同…...

10个ai算法常用库java版

今年ChatGPT 火了半年多,热度丝毫没有降下来。深度学习和 NLP 也重新回到了大家的视线中。有一些小伙伴问我,作为一名 Java 开发人员,如何入门人工智能,是时候拿出压箱底的私藏的学习AI的 Java 库来介绍给大家。 这些库和框架为机器学习、深度学习、自然语言处理等提供了广…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”

案例&#xff1a; 某医药分销企业&#xff0c;主要经营各类药品的批发与零售。由于药品的特殊性&#xff0c;效期管理至关重要&#xff0c;但该企业一直面临效期问题的困扰。在未使用WMS系统之前&#xff0c;其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...