scala - Map基础

Map

构造Map

不可变:

val map = Map("sa" -> 1, "s" -> 2)
map("sa") = 3 // error

val emptyMap = new scala.collection.immutable.HashMap[String, Int]

可变:

val map2 = scala.collection.mutable.Map("sa" -> 2)
map2("sa") = 3

val emptyMap = new scala.collection.mutable.HashMap[String, Int]

注:->用来创建元组, "sa" -> 1即("sa", 1)

初始化完全可以 val map = Map(("sa", 1), ("s", 2))

获取Map中的值:

如果map中不包含请求中使用的key值,则抛异常。NoSuchElementException

  map("sa") // 类似于java中的map.get("sa")

要检查map中是否包含某个key,使用contains方法。

  val sa = if (map2.contains("sa3")) map2("sa3") else 0;

快捷的方式:

  val sa2 = map.getOrElse("sa2", 0)

一次得到是否包含key,并获取值:

  val sa3 = map.get("sa3"); // Option类型,
  println(sa3.isEmpty)

更新Map中的值:

添加或更新:

  map("sa") = 3

添加或更新多个:

  map += ("aa" -> 4, "bb" -> 5)

移除某个key和对应的值:

  map -= "aa"

不可变的map也可以使用+和-操作,但是会生成新的map

  var map = Map("aa" -> 1)

  map = map + ("bb" -> 2)

  map += ("cc" -> 2)

  map -= "aa"

迭代map:

for ((k, v) <- map) {

  // TODO

}

所有key:

  map.keySet

所有值:

  map.values

反转:

  map2 = for((k, v) <- map) yield (v, k)

已排序Map:

按key排序:

  SortedMap

按添加顺序:

  LinkedHashMap

Map与Java互操作:

Java Properties转为scala.collection.Map:

  import scala.collection.JavaConversions.propertiesAsScalaMap
  val prop: scala.collection.Map[String, String] = System.getProperties();

Java Map转为scala.collection.mutable.Map[String, Int]:

  import scala.collection.JavaConversions.mapAsScalaMap
  val map: scala.collection.mutable.Map[String, Int] = new TreeMap[String, Int]

Scala Map转为Java Map:

  import scala.collection.JavaConversions.mapAsJavaMap
  import java.awt.font.TextAttribute._
  var fs = Map(FAMILY -> "Serif", SIZE -> 12)
  var fonts = new Font(fs)

时间: 2024-10-12 21:18:20

scala - Map基础的相关文章

新书:Scala语言基础与开发实战

大数据科学丛书系列的最新一本<Scala语言基础与开发实战>即将面市,预计月底上架.内容还是不错的,文笔简介,内容实用,值得学.用. 大数据资深培训师王家林新作. 详细介绍大数据开发语言Scala及其在分布式框架Akka和Kafka中的应用. 秉承"实战"类图书特点,解析大量代码的编写操作,具有较强的可操作性,便于读者学习和理解. 算上再过几个月出版的<Spark内核解析及性能调优>,一年时间,大数据科学丛书系列之Spark的小套系基本形成了:从学习Spark的

scala的基础数据类型&amp;if条件表达式&amp;for循环

scala的基础数据类型有7种:(无引用类型) Byte Char Short Int Long Float Double 两种变量类型定义:val(常量)var(变量) 使用val定义的常量,指引用的不可再改变,而用var变量引用的是可以进行改变,如下示: 注:scala语言可以不用定义变量的数据类型,变量的数据类型会根据输入的内容自动识别变量所引用的值的类型,也可以不用在语句后加分号,系统默认一行是一条语句. if条件表达式: for循环: 数组定义及for循环使用: 原文地址:https:

scala 基础六 scala Map和元组的操作

1.Map的介绍 Map(映射)是一种可迭代的键值对(key/value)结构.所有的值都可以通过键来获取.Map 中的键都是唯一的.Map 也叫哈希表(Hash tables).Map 有两种类型,可变与不变,区别在于可变对象可以修改它,而不可变对象不可以.默认情况下 Scala 使用不可变 Map.如果你需要使用可变集合,你需要显式的引入 import scala.collection.mutable.Map 类 2.Map 的分类和定义   //不可变Map    var m1=Map("

Scala学习——基础篇

一.基础 1.变量val 标志符: 声明常量: 如,val answer = 1var 标志符:声明变量: 类型推断:变量的类型由scala根据初始化变量的表达式推断而来: 鼓励使用val: 注:声明变量时不做初始化会报错. 明确类型: scala的变量或函数的类型总是写在变量或函数的后面. 1 val a:Int = 1 2 val str:String = 2 2.常用类型 Scala支持7种数值类型和1种Boolean类型. Byte/Char/Short/Int/Long/Float/D

scala map和flatMap

map和flatMap scala> val a = Seq(1,2,3,6,4) a: Seq[Int] = List(1, 2, 3, 6, 4) scala> val b = a.flatMap(f=>{ | try{ | Some(f/(f-1)) | }catch{ | case e:Exception=>None | } | }) b: Seq[Int] = List(2, 1, 1, 1) scala> val b = a.map(f=>{ | try{

Scala学习 - 基础类型

Scala中的类型相对于Java来说,与.net的想法更为接近,所有的类型都是基于一个基础类型,包括值类型也是继承自该类型: Java中值类型是语言直接提供的,这点上有点不同: 类型关系图如下: 其中所有类型的基类与Any Any之后分为两个AnyVal与AnyRef 其中AnyVal是所有值类型的父类型 AnyRef是所有引用类型的父类型 与其他语言稍微有点不同的是,Scala还定义了底类型 其中Null类型是所有引用类型的底类型,及所有AnyRef的类型的空值都是Null 而Nothing是

scala的基础部分

最近接触到spark,spark又是scala编写的,所以需要学习一下scala. scala是面向对象的,一切皆为对象, 数值,函数都是对象. println("Welcome to the Scala")  /就这样进入scala学习模式了.... 1.变量 val x=10;自动转换类型为Int.val y:Int=10;自定义变量y的类型.lazy val c=a+b ;当变量c第一次被使用的时候才会被计算值. 2.scala类型体系基类:AnyAny下面是AnyVal和Any

Scala入门基础3

1>类和对象 类的定义和简单使用 class Student(name:String,age:Int){ var this.name=name var this.age=age def outPut(): Unit ={ println("学生:"+this.name+"今年"+this.age+"岁") } } object HelloWorld { def main(args: Array[String]) { var s=new St

Scala学习 -- 基础语法

一.变量 1.三种变量修饰符 val 定义 immutable variable(不修改 常量) var 定义 immutable variable(可修改 变量)   lazy val (惰性赋值的常量):不直接算出结果,在系统第一次调用 lazy val 的时候计算结果 scala> val d = 12 d: Int = 12 scala> val e = 20 e: Int = 20 scala> lazy val f = d * e f: Int = <lazy>