在scala中Map分为可变长(mutable)和不可变长(imtable)

     /**
* 不可变长map 长度一旦初始化,就不能在进行更改
*/
// 通过对偶元组的方式创建map
val map = Map("name" -> "leo", "age" -> 16, "sex" -> "男") // 通过箭头的方式创建map
val map1 = Map(("name", "jack"), ("age", 16), ("sex", "女")) // 通过两者混搭创建map
val map3 = Map("name" -> "tuoni", ("name", "hengr")) // ++ 操作合并两个map 原map不变
val newmap = map ++ map1 println(map + "," + map1 + "," + map3 + "," + newmap)
   /**
* 不可变长Map映射,长度,值一旦初始化后不能再次被改变
*/
val map4 = mutable.Map("a" -> "A")
map4.put("b", "B")
map4 += ("c" -> "C", "d" -> "D")
map4 ++= mutable.Map("hah" -> "HAH", ("a", "b"))
// 移除Map映射,mutable 包下
println(map4)
map4 -= ("b", "B")
map4 --= Set("a", "b")
map4.remove("c")
println(map4) // Map(b -> B, hah -> HAH, d -> D, a -> b, c -> C)
// Map(hah -> HAH, d -> D)
/**
* map映射常用操作方法
*/
// contains 方法判断一个key 是否存在,存在返回true,否则返回false
val map = mutable.Map("b" -> "B", "hah" -> "HAH", "d" -> "D", "a" -> "b", "c" -> "C")
println(map.contains("b")) //获取key对应的值,注意如果通过 Map(“key”)获取对应的值应该进行key是否存在判断
if (map.contains("e")) {
println(map("e"))
}
// 映射的get 方法也是用来获取key 对应的值,但是这个方法返回的是一个option对象,这个option
// 对象有两个子类,如果有key 则返回Some(some对象中封装了key对应的值,可以通过some的get
// 方法获取该值)对象。
// 没有key则返回None对象 val value: Option[String] = map.get("a")
//isEmpty方法可以用来判断是Some对象还是None
if (!value.isEmpty) {
println(value)
} else {
println(value)
}
  // 如果key 存在则返回对应的值,如果key不存在则返回给定的值
  val v1 = map.getOrElse("f","EEE")
  println(v1)

/**
* LinkedHashMap 插入有序,会按照我们的插入顺序排序,因为底层是链表结构
*/
val map5 = mutable.LinkedHashMap[String, String]()
map5 += ("d" -> "D")
map5 += (("a", "A"))
map5("c") = "C"
map5("b") = "B"
println(map5) /**
* SortedMap 可以自动对Map的key进行排序
*/
val map6 = mutable.SortedMap[String, String]()
map6("c") = "C"
map6("b") = "B"
map6("a") = "A"
println(map6)

scala (6) Map的更多相关文章

  1. Scala集合Map

    在scala中Map分为可变长(mutable)和不可变长(immutable) /** * 不可变长map 长度一旦初始化,就不能在进行更改 */ // 通过箭头的方式创建map val map = ...

  2. scala之map,List,:: , +:, :+, :::, +++操作

    scala之map,List操作 1.Map操作 2.List操作 2.1Demo1 2.2Demo2 3.:: , +:, :+, :::, +++ 1.Map操作 Map(映射)是一种可迭代的键值 ...

  3. Scala之Map,Tuple

    /** * 1,默认情况下Map构造的是不可变的集合,里面的内容不可修改,一旦修改就变成新的Map,原有的Map内容保持不变: * 2,Map的实例是调用工厂方法模式apply来构造Map实例,而需要 ...

  4. scala中Map和Set

    scala中Set包含可变set和不可变Set,set的子类HashSet,各有一个扩展了可变和不可变的set特质.  可变set import scala.collection.mutable.Se ...

  5. (转)scala中map与flatMap浅析

    在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合.由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好 ...

  6. scala的Map

    package com.test.scala.test object MapTest { def main(args: Array[String]): Unit = { //定义一个不可变的map v ...

  7. scala中Map集合的简单使用

    import scala.collection.mutable /** * Map集合的简单使用 */ object MapUse { def main(args: Array[String]): U ...

  8. scala的map操作

    新建一个不定参数的 map: var cs = mutable.Map.empty[String, String] 对其进行赋值: cs += (key -> value) 读取里面所有的 ke ...

  9. scala中Map和Tuple

    /** * Created by root * Description : Tuple and Map */ object MapTest { def main(args: Array[String] ...

随机推荐

  1. WritePrivateProfileString、GetPrivateProfileString 读写配置文件

    WritePrivateProfileString 写配置文件 BOOL WINAPI WritePrivateProfileString( _In_ LPCTSTR lpAppName, _In_ ...

  2. 内置模块之sys

    一.模块sys sys模块主要对解释器相关的操作 1.常用方法和属性 sys.argv    命令行参数List,第一个元素是程序本身路径 sys.exit(n)  退出程序,正常退出时exit(0) ...

  3. 关于eclipse没有js、xml代码提示的解决:下载一个插件

    1)eclipse打开帮助 2)Eclipse Marketplace,然后搜索AngularJS Eclipse 安装后重启就行了 xml的搜索Rinzo. 没有vpn,我的网络到达不了.

  4. python将字符串转变成dict格式

    字符串的内容是字典,需将字符串转变成字典格式 s1 = '{"lid":2,"date":"20190211","type&quo ...

  5. unittest:1 用例编写

    unittest是python自带的单元测试框架,包含测试用例case,测试集suite,测试集加载loader,测试执行runner,测试结果result等. 简单使用:写一个用例类继承自unitt ...

  6. iOS绘图事务的运行验证

    结合WWDC,以我们的call stack为例,来说明这四个过程分别大概都做了什么. layout过程 从上面layout的过程可以看出,其所做的主要任务就是将图层调用代理(也就是视图)实现整个视图层 ...

  7. Guava包学习---Lists

    Guava包是我最近项目中同事推荐使用的,是google推出的库.里面的功能非常多,包括了集合.缓存.原生类型支持.并发库.通用注解.字符串处理.IO等.我们项目中使用到了guava依赖,但是实际上只 ...

  8. indexzero/http-server-1-简介

    ethereumjs-vm的例子有用到这个 看完ethereumjs-vm,再看他ethereumjs/browser-builds,然后最后看他http-server,然后就能了解ethereumj ...

  9. UnicodeEncodeError: 'ascii' codec can't encode characters in position 16-22: ordinal not in range(128)

    在python2.7下,将字符串写入到文件时会出现"UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in p ...

  10. istringstream和ostringstream的实现

    ostringstream是将数据写入string里边的,istringstream是将从string里边读出数据的: #include <sstream> int main() { st ...