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

scala-基础-映射(1)

//映射(1)-构建,获取,更新,迭代,反转,映射(可变与不可变 互换)
class Demo1 extends TestCase {
    
    //构建与获取
    def test_create_^^(){
        //构建-不可变Map(映射),值不能改变
        val mapa = Map("001"->10,"002"->20,"CINDY"->30)  
        //mapa("001") = 2
        //构建可变Map(映射)
        val mapb = scala.collection.mutable.Map("001"->10,"002"->20,"CINDY"->30)
        mapb("001") = 22
        //构建空映射
        val mapc = new scala.collection.mutable.HashMap[String,Int]
        mapc.+=("002"->2)        
        //构建映射对偶的另一种方式
        mapc.+=(("12",15))
        
        //获取映射值
        val v1 = mapc ("12")      //方式一
        val v2 = mapc get("12")   //方式二
        
        //加入映射中不包含请求的键会抛出异常
        //val v3 = mapc ("012")
        //检测映射中是否包含某个键通过 contains
       val b = mapc contains("012") 
       val v3 = if (mapc contains("012")) mapc("012") else 0
       //简略写法
       val v4 = mapc getOrElse("012", 21)
       println(v4)
    }
    
   //更新 
   def test_update_&&(){
      val mapc = new scala.collection.mutable.HashMap[String,Int]
      //添加(单个对偶,多个对偶)
      mapc.+=("002"->2)
      mapc.+=(("000",-2),"001"->1)
      //更新键对应值,加入map集合中有该值,则重新赋值,没有的话则属于新增动作
      mapc("002") = 21    
      mapc("0001") = 101
      //移除
      mapc remove "000"
      mapc -= "000"
   } 
   
   //迭代映射,反转
   def test_foreach_&&(){
     val mapc = new scala.collection.mutable.HashMap[String,Int]
     mapc += ("JACK"->32,("lucy",21),"Mark"->18)
     for((k,v)<-mapc) println(k+" " +v)  //(k,v) 泛型元组
     for(k <- mapc.keySet) println(k+" "+mapc(k))
     for(v <- mapc.values) println(v)    
     
     val mapa = for((k,v) <- mapc) yield (v,k)
     val mapb = for((k,v) <- mapc if v>15) yield (v,k)
   }
   
   //映射(可变与不可变 互换)
   //不可变映射可通过 + 操作符返回一个新的不可变映射;不可变映射可通过 - 操作符返回一个新的不可变映射;
   def test_trunt_%%(){
     val ma = Map("0"->1)
     val mb = ma + ("0"->10)
     val mc = mb -("0") 
   }
   
}

 

转载于:https://www.cnblogs.com/ak23173969/p/6792384.html

相关文章:

  • struts2的核心和工作原理
  • Linux 有问必答:在 Linux 如何更改文本文件的字符编码
  • 《Node应用程序构建——使用MongoDB和Backbone》一2.4 Socket.io
  • 《C++ 黑客编程揭秘与防范(第2版)》—第6章6.2节详解PE文件结构
  • 《Adobe Illustrator CS5中文版经典教程》—第0课0.16节 使用符号
  • 《Nmap渗透测试指南》—第1章1.3节Linux/Unix源码编译安装Nmap
  • 《嵌入式 Linux C 语言应用程序设计(修订版)》——本章小结
  • 《创意特训营——30天超级灵感唤醒术》—第1章1.4节增加创意的数量
  • 《游戏大师Chris Crawford谈互动叙事》一9.3 互动小说(Interactive Fiction,IF):文字冒险的继承者...
  • 《Wireshark网络分析实战》—第1章1.2节安置Wireshark(程序或主机)
  • 《精通QTP——自动化测试技术领航》—第1章1.2节帮助文档(HELP)-QTP的说明书...
  • 《jQuery、jQuery UI及jQuery Mobile技巧与示例》——9.16 技巧:使用主题来更改配色方案...
  • 如何使用Aptik来备份和恢复Ubuntu中的Apps和PPAs
  • 《游戏大师Chris Crawford谈互动叙事》一导读
  • 麻省理工设计出可以快速生产和应用的可编程RNA疫苗
  • Electron入门介绍
  • exif信息对照
  • FineReport中如何实现自动滚屏效果
  • Java 内存分配及垃圾回收机制初探
  • javascript数组去重/查找/插入/删除
  • Java读取Properties文件的六种方法
  • js如何打印object对象
  • js算法-归并排序(merge_sort)
  • Mac转Windows的拯救指南
  • 搭建gitbook 和 访问权限认证
  • 多线程 start 和 run 方法到底有什么区别?
  • 基于Android乐音识别(2)
  • 区块链分支循环
  • 驱动程序原理
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 消息队列系列二(IOT中消息队列的应用)
  • 用jQuery怎么做到前后端分离
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • !!Dom4j 学习笔记
  • # include “ “ 和 # include < >两者的区别
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #Linux(权限管理)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (五)MySQL的备份及恢复
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • 、写入Shellcode到注册表上线
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET是什么
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [android] 看博客学习hashCode()和equals()
  • [ASP]青辰网络考试管理系统NES X3.5
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [C#7] 1.Tuples(元组)
  • [daily][archlinux][game] 几个linux下还不错的游戏