1.声明

当前内容主要用于本人学习和复习,当前内容为使用和测试Map集合

当前内容借鉴:菜鸟教程

Map集合存在两种

  1. 可修改的Map:scala.collection.mutable.Map
  2. 不可修改的Map:scala.Map

基本上和Set集合差不多

2.共同的操作

1.创建Map集合操作

  1. var 变量=Map()
  2. var 变量:Map[k类型,v类型]=Map[k类型,v类型]()
  3. var 变量:Map[k类型,v类型]=Map[k类型,v类型](key->value,.....)
  4. 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.keysmap.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集合的使用相关推荐

  1. Scala里Map()集合

    方法 描述 keys 返回 Map 所有的键(key) values 返回 Map 所有的值(value) isEmpty 在 Map 为空时返回true keySet 返回key集合 valueSe ...

  2. Scala集合:Map集合

    Map遍历及+增加数据 Map集合默认不可变 可变Map集合 -删除数据 修改数据 空指针问题 总结

  3. Scala 可变集合体系、不可变集合体系 详解

    文章目录 Scala数据结构的特点 1. Scala的集合基本介绍 2. 可变集合和不可变集合举例 不可变集合继承层次--览图 可变集合继承层次--览图 数组-定长数组(声明泛型) 1. 第一种方式定 ...

  4. scala 数组集合(思维导图,初级必备)

    scala 系列 scala 入门基础 scala 数组集合 scala 143个数组函数大全 scala 函数 scala OOP scala 高级扩展 scala 数组集合 scala 系列 前言 ...

  5. Java中的Map集合遍历总结(详尽版)

    因为Map集合中的键值对排列无序,所以不能用传统的for循环来遍历,只能使用加强循环(for-each)和迭代器进行遍历. 让我们通过例子来了解Map集合的遍历: package gather; im ...

  6. 安卓取map集合转换为json_android json解析成map格式

    "discount": { "3": "34", "4": "33", "5": ...

  7. Map集合中value()方法与keySet()、entrySet()区别 ——转载

    为什么80%的码农都做不了架构师?>>>    在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入 ...

  8. java map 队列_Java:queue队列,map集合

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口.Lin ...

  9. 8.Map集合(HashMapTreeMap)

    一.Map集合概述和使用 1.Map集合概述 Interface Map<K,V> K:键的类型 V:值的类型 将键映射到值的对象:不能包含重复的键:每个键可以映射到最多一个值 创建Map ...

最新文章

  1. angular初步认识一
  2. 这所211大学,迎来80后女科学家任副校长
  3. 使用Xcode修改iOS项目工程名和路径名
  4. mysql 安装更改目录权限设置密码_mysql-8.0 安装教程(自定义配置文件,密码方式已修改)...
  5. NameNode之租约管理
  6. 读书_w3c架构师01通用设计与方法论
  7. Django之ModelForm详解
  8. 蓝桥杯2016年第七届C/C++省赛B组第二题-生日蜡烛
  9. TheFatRat免杀
  10. 【Unity】制作圆形进度条
  11. linux rhel 7系统启动过程
  12. 【业务人员第一视角】氚云低代码开发平台测评
  13. MAC Photoshop标题栏不见了
  14. #foxpro(VFP) 入门(一) 常用命令
  15. [cnblogs镜像]苹果操作系统名称演变史 新名称macOS
  16. 密码学基础知识(二)
  17. 让Win7系统下的硬盘不在狂闪的诀窍
  18. Matlab 蒙特卡洛求解三门问题
  19. [补充]上集 Ch. 19-12(AJAX)在ListView / GridView的「样版」里面,放置 UpdatePanel
  20. NIO与Netty编程(三)之Netty编程

热门文章

  1. 三星Note 7惊魂48天:产品质量比创新和体验更重要
  2. 总离差平方和公式_excel公式怎么用:用EXCEL求离差平方和 和 相关系数
  3. python实现繁体中文和简体中文的互相转化
  4. linux之shell脚本
  5. PCI DSS v4.0变更系列之一——变更概述
  6. 产品使用说明书小程序开发制作说明
  7. VueDemo-21 确认订单
  8. 轻松搞定SpringBoot的邮件服务
  9. 计算机课件制作软件,浅谈计算机课件制作
  10. java8/日期时间