Scala:Map集合的使用
1.声明
当前内容主要用于本人学习和复习,当前内容为使用和测试Map集合
当前内容借鉴:菜鸟教程
Map集合存在两种
- 可修改的Map:
scala.collection.mutable.Map
- 不可修改的Map:
scala.Map
基本上和Set集合差不多
2.共同的操作
1.创建Map集合操作
var 变量=Map()
var 变量:Map[k类型,v类型]=Map[k类型,v类型]()
var 变量:Map[k类型,v类型]=Map[k类型,v类型](key->value,.....)
var 变量=Map(key->value,.....)
// 1.创建map
var map: Map[String, Any] = Map();
var map2: Map[String, Any] = Map[String, Any]();
var map3: Map[String, String] = Map[String, String]("name" -> "haha");
var user = Map("name" -> "user", "age" -> 18);
2.添加数据操作:map.+(k->v)
和map+=(k->v)
// 2. 添加数据操作println(user);user.+("email" -> "user@qq.com");println(user); // 没有改变user = user.+("email" -> "user@qq.com");println(user); // 改变了user += ("salary" -> 100.0);println(user); // 改变了
3.其他的操作
// 3.判断当前的map集合是否为空和map集合的长度println(user.size);println(user.isEmpty);// 判断是否存在某个keyprintln(user.contains("name"));
这个操作和List、Set一致
4.修改和删除操作:修改和添加一样,删除使用(map.-(key)
和map-=(key)
)
// 4.修改属性user += ("salary" -> 1000.0);println(user);// 5.删除属性user -= ("salary");println(user);user = user.-("email");println(user);
5.获取所有的key和value:map.keys
和map.values
// 6.获取所有的key和所有的value
println(user.keys)
println(user.values);
// 7.循环方式输出key和value
println("=========输出key和value==========");
user.foreach(k => println("key-value=" + k)); // 返回结果为元祖
user.foreach(k => println("key=" + k._1 + ",value=" + k._2)); // 由于k是一个元祖,所以可以使用._1(第一个表示key),和._2(表示value)
user.keys.foreach(k => println("key=" + k + ",value=" + user(k) + ",value=" + user.get(k))); // 可以通过变量(key)和变量.get(key)方式获取值
发现map.foreach的时候,迭代的是一个元祖,可以使用元祖的数据来获取key和value
6.集合的操作
// 8.集合的操作
println("=========集合的操作==========");
// 合并集合
println(user);
var admin = Map("name" -> "admin", "email" -> "admin@qq.com");
println(user.++(admin)); // 表示在user集合的里面加入admin集合,所以出现user中的数据被覆盖// 移除集合中的属性
println(user.--(Set("name", "admin"))); // 注意该操作为Set集合或者List集合
7.更新数据操作:map.update(key,value)
// 9.更新操作user.updated("key", "root"); // 无效,返回一个新的mapuser = user.updated("key", "admin"); //没有就直接添加user = user.updated("name", "bob"); //有就直接修改println(user);
3.可修改的Map集合的操作
import scala.collection.mutable.{ Map => ModifyMap };/*** @description 主要用于测试当前的可修改的Map集合* @author hy* @date 2020-06-27*/
object ModifyMapTest {var user = ModifyMap("name" -> "user", "age" -> 18);//def main(args: Array[String]): Unit = {user.put("email", "user@qq.com");user.+("address" -> "admin's address");user += ("salary" -> 999.0);println(user); // put和user+=都可以改变map,.+不能改变map,这说明其 部分内容与不可修改的map一致user.remove("email");println(user); // 删除成功//user.updated("key", "admin"); // 无效,和scala中的Map使用方式一致,必须赋值//user.updated("name", "bob");//println(user);// 发现一个不同点就是可修改的Map提供了put和当前的remove方式添加和修改map集合}
}
发现可修改的map就是提供了一个put和remove方法来实现修改map集合
4.总结
1.scala中的Map集合的使用方式基本上和java差不多,都是key和value
2.scala中具有可修改和不可修改的Map集合
3.可修改的Map和不可修改的Map区别在于,可修改的Map提供了add和remove方法来修改集合
以上纯属个人见解,如有问题请联系本人!
Scala:Map集合的使用相关推荐
- Scala里Map()集合
方法 描述 keys 返回 Map 所有的键(key) values 返回 Map 所有的值(value) isEmpty 在 Map 为空时返回true keySet 返回key集合 valueSe ...
- Scala集合:Map集合
Map遍历及+增加数据 Map集合默认不可变 可变Map集合 -删除数据 修改数据 空指针问题 总结
- Scala 可变集合体系、不可变集合体系 详解
文章目录 Scala数据结构的特点 1. Scala的集合基本介绍 2. 可变集合和不可变集合举例 不可变集合继承层次--览图 可变集合继承层次--览图 数组-定长数组(声明泛型) 1. 第一种方式定 ...
- scala 数组集合(思维导图,初级必备)
scala 系列 scala 入门基础 scala 数组集合 scala 143个数组函数大全 scala 函数 scala OOP scala 高级扩展 scala 数组集合 scala 系列 前言 ...
- Java中的Map集合遍历总结(详尽版)
因为Map集合中的键值对排列无序,所以不能用传统的for循环来遍历,只能使用加强循环(for-each)和迭代器进行遍历. 让我们通过例子来了解Map集合的遍历: package gather; im ...
- 安卓取map集合转换为json_android json解析成map格式
"discount": { "3": "34", "4": "33", "5": ...
- Map集合中value()方法与keySet()、entrySet()区别 ——转载
为什么80%的码农都做不了架构师?>>> 在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入 ...
- java map 队列_Java:queue队列,map集合
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口.Lin ...
- 8.Map集合(HashMapTreeMap)
一.Map集合概述和使用 1.Map集合概述 Interface Map<K,V> K:键的类型 V:值的类型 将键映射到值的对象:不能包含重复的键:每个键可以映射到最多一个值 创建Map ...
最新文章
- angular初步认识一
- 这所211大学,迎来80后女科学家任副校长
- 使用Xcode修改iOS项目工程名和路径名
- mysql 安装更改目录权限设置密码_mysql-8.0 安装教程(自定义配置文件,密码方式已修改)...
- NameNode之租约管理
- 读书_w3c架构师01通用设计与方法论
- Django之ModelForm详解
- 蓝桥杯2016年第七届C/C++省赛B组第二题-生日蜡烛
- TheFatRat免杀
- 【Unity】制作圆形进度条
- linux rhel 7系统启动过程
- 【业务人员第一视角】氚云低代码开发平台测评
- MAC Photoshop标题栏不见了
- #foxpro(VFP) 入门(一) 常用命令
- [cnblogs镜像]苹果操作系统名称演变史 新名称macOS
- 密码学基础知识(二)
- 让Win7系统下的硬盘不在狂闪的诀窍
- Matlab 蒙特卡洛求解三门问题
- [补充]上集 Ch. 19-12(AJAX)在ListView / GridView的「样版」里面,放置 UpdatePanel
- NIO与Netty编程(三)之Netty编程