Scala学习笔记-映射和元组
2017-10-20 09:40
369 查看
1.构造映射
映射是键值对偶的集合。
1)不可变映射,其值不能被修改
val scores=Map(" Alice"->10,"bob"->3,"merry"->5)或者
val scores=Map((" Alice",10),("bob",3),("merry",5))
2)可变映射
val scores=scala.collect.mutable.Map(" Alice"->10,"bob"->3,"merry"->5)
3) 空映射,必须给出类型参数
val scores=new scala.collect.mutable.HashMap[String,Int]
2. 获取映射中的值
1)查找键对应的值
val bobscore=scores("bob") //类似与java中的scores.get("bob")
如果映射中不包含请求中的键,则抛出异常
2)查找映射中是否存在某个键
val bobscore=if(scores.contains("bob")) scores("bob") else 0 简写方法:
val bobscore=scores.getOrElse("bob",0)
3. 更新映射中的值
在可变映射中,
1)更新映射的值
scores("bob")=10
2) 添加映射键值对
scores("fred")=7
3) 添加多个关系
scores += ("bob"->10,"fred"->7)
4) 移除某个键值对
scores -="bob"
不能更新一个不可变的映射,但是可以获取一个包含所有需要的更新的新映射:
val newScores=scores+ ("bob"->10,"fred"->7) //更新过的新映射
newScores映射包含了与scores相同的映射关系,此外“bob”被更新,“fred"被添加
删除操作与可变映射相同
4. 迭代映射
1)遍历映射中所有的键值对:
for ( (k, v) <- 映射) 处理k和v
2) 只访问键
scores.keySet
3)只访问值
scores.values
4)交换键值对位置
for( (k, v) <-映射) yield( v,k)
5. 已排序映射
映射实现由哈希表和平衡树,默认是哈希表
val scores=new scala.collect.mutable.HashMap(" Alice"->10,"bob"->3,"merry"->5) //哈希映射
val scores=new scala.collect.mutable.SortedMap(" Alice"->10,"bob"->3,"merry"->5) //树映射
6. 与java的互操作
1) java映射转scala映射
方法一:
引入 import scala.collection.JavaConbersions.mapAsScalaMap
指定scala映射类来触发转换:
val scores: scala.collection.mutable.Map[String,Int]=new java.util.TreeMap[String,Int]
方法二:
得到从java.util.Properties到Map[String,String]的转换:
import scala.collection.JavaConversions.proprtireAsScalaMap
val props: scala.collection.Map[String,String]=System.getProperties()
2)scala映射转java映射
import scala.collection.JavaConversions.mapAsJavaMap
import java.awt.font.TextAttribute._ //引入下面映射会用到的键
val attrs=Map(FAMILY -> "Serif",SIZE->12)
val font=new java.awt.Font(attres)
7.元组
映射是键值对偶的集合。对偶是元组最简单的形态,元组是不同类型的值的聚集
例如: (1,3.14,”fred“)类型为Tuple3[Int, Double ,java.long.String]
可以用方法_.1、_.2、_.3访问其组元。例如 val s=t._2 //s设为3.14
和数组或者字符串不同,元组各组元从1开始,而不是0
可以使用模式匹配来获取元组的组元,例如:
val (first , second , third )=t //将first设为1,second设为3.14,third 设为”fred“
如果不是所有部件都需要,可以在不需要的部件位置上使用 _:
val (first , second , _ )=t
元组还可以用于函数需要返回不止一个值的情况
8. 拉链操作
使用元组的原因之一是把多个值绑在一起,以便它们能够一起被处理,这通常可以用zip方法来完成。例如:
val symbols=Array("<","-",">")
val counts=Array(2,10,2)
val pairs=symbols.zip(counts) //输出对偶Array(("<",2),("-",10),(">",2))
这些对偶可以一起被处理:
for( (s,n)<- pairs) Consile.print(s*n)// 打印 <<---------->>
映射是键值对偶的集合。
1)不可变映射,其值不能被修改
val scores=Map(" Alice"->10,"bob"->3,"merry"->5)或者
val scores=Map((" Alice",10),("bob",3),("merry",5))
2)可变映射
val scores=scala.collect.mutable.Map(" Alice"->10,"bob"->3,"merry"->5)
3) 空映射,必须给出类型参数
val scores=new scala.collect.mutable.HashMap[String,Int]
2. 获取映射中的值
1)查找键对应的值
val bobscore=scores("bob") //类似与java中的scores.get("bob")
如果映射中不包含请求中的键,则抛出异常
2)查找映射中是否存在某个键
val bobscore=if(scores.contains("bob")) scores("bob") else 0 简写方法:
val bobscore=scores.getOrElse("bob",0)
3. 更新映射中的值
在可变映射中,
1)更新映射的值
scores("bob")=10
2) 添加映射键值对
scores("fred")=7
3) 添加多个关系
scores += ("bob"->10,"fred"->7)
4) 移除某个键值对
scores -="bob"
不能更新一个不可变的映射,但是可以获取一个包含所有需要的更新的新映射:
val newScores=scores+ ("bob"->10,"fred"->7) //更新过的新映射
newScores映射包含了与scores相同的映射关系,此外“bob”被更新,“fred"被添加
删除操作与可变映射相同
4. 迭代映射
1)遍历映射中所有的键值对:
for ( (k, v) <- 映射) 处理k和v
2) 只访问键
scores.keySet
3)只访问值
scores.values
4)交换键值对位置
for( (k, v) <-映射) yield( v,k)
5. 已排序映射
映射实现由哈希表和平衡树,默认是哈希表
val scores=new scala.collect.mutable.HashMap(" Alice"->10,"bob"->3,"merry"->5) //哈希映射
val scores=new scala.collect.mutable.SortedMap(" Alice"->10,"bob"->3,"merry"->5) //树映射
6. 与java的互操作
1) java映射转scala映射
方法一:
引入 import scala.collection.JavaConbersions.mapAsScalaMap
指定scala映射类来触发转换:
val scores: scala.collection.mutable.Map[String,Int]=new java.util.TreeMap[String,Int]
方法二:
得到从java.util.Properties到Map[String,String]的转换:
import scala.collection.JavaConversions.proprtireAsScalaMap
val props: scala.collection.Map[String,String]=System.getProperties()
2)scala映射转java映射
import scala.collection.JavaConversions.mapAsJavaMap
import java.awt.font.TextAttribute._ //引入下面映射会用到的键
val attrs=Map(FAMILY -> "Serif",SIZE->12)
val font=new java.awt.Font(attres)
7.元组
映射是键值对偶的集合。对偶是元组最简单的形态,元组是不同类型的值的聚集
例如: (1,3.14,”fred“)类型为Tuple3[Int, Double ,java.long.String]
可以用方法_.1、_.2、_.3访问其组元。例如 val s=t._2 //s设为3.14
和数组或者字符串不同,元组各组元从1开始,而不是0
可以使用模式匹配来获取元组的组元,例如:
val (first , second , third )=t //将first设为1,second设为3.14,third 设为”fred“
如果不是所有部件都需要,可以在不需要的部件位置上使用 _:
val (first , second , _ )=t
元组还可以用于函数需要返回不止一个值的情况
8. 拉链操作
使用元组的原因之一是把多个值绑在一起,以便它们能够一起被处理,这通常可以用zip方法来完成。例如:
val symbols=Array("<","-",">")
val counts=Array(2,10,2)
val pairs=symbols.zip(counts) //输出对偶Array(("<",2),("-",10),(">",2))
这些对偶可以一起被处理:
for( (s,n)<- pairs) Consile.print(s*n)// 打印 <<---------->>
相关文章推荐
- Spark学习使用笔记 - Scala篇(3)- 映射,元组
- scala学习笔记3 映射和元组
- Spark学习使用笔记 - Scala篇(3)- 映射,元组
- Scala学习笔记02【数组、列表、元组、集合和映射】
- 快学Scala学习笔记及习题解答(1-4基础、控制、函数、数组、元组和映射)
- 学习Scala——映射和元组
- 学习Scala——映射和元组
- Scala学习之初探"数组、列表、元组、集、映射"
- 学习Scala——映射和元组
- Scala学习(四)---映射和元组
- scala编程第17章学习笔记(2)——集和映射
- 学习Scala——映射和元组
- scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例
- 学习Scala——映射和元组
- scala编程第17章学习笔记(4)——元组
- 学习Scala——映射和元组
- Scala学习笔记之元组`Tuple`
- 学习Scala——映射和元组
- 学习Scala——映射和元组
- 学习Scala——映射和元组