3. Map与Tuple
一. Map
- 对偶
(1)对偶是一个映射。多个对偶形成map
(2)对偶的表示:(k,v)或者k->v - Map(哈希类型)
(1)map的声明与查询scala> val map1 = Map(("a",1),("b",2),("c",3))
map1: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 2, c -> 3) scala> map1("a")
res3: Int = 1 scala> if(map1.contains("a")) map1("a") else 0 // contains方法
res4: Int = 1 scala> map1.getOrElse("a",0) // 上面的简写形式
res6: Int = 1
(2)immutable map的插入,删除映射
scala scala> val newMap = map1 + ("a"->5,"d"->4) // 不可变map的+操作返回一个新集合 newMap: scala.collection.immutable.Map[String,Int] = Map(a -> 5, b -> 2, c -> 3, d -> 4)
【注】:对于不可便map来说,添加对偶形成新map,不会把原有的对偶复制一遍,而是指向原来的对偶(这样做之所以可行,因为他们是不可变集合)
(3) 遍历集合
scala scala> for((k,v)<-map1) println(k+"\t"+v) a 1 b 2 c 3 scala> for(v <- map1.values) print(v+",") 1,2,3, scala> for(k <- map1.keySet) print(map1(k)+",") 1,2,3,
3. SortedMap(树形排序map)
scala中没有可变树形map,如要使用,可选择java的treemap
```scala
scala> scala.collections.immutable.SortedMap("Alice"->10,"Fred"->7,"Cindey"->8)
```
scala操作java集合
scala要操作java集合,先要把java集合转换成scala集合import scala.collection.JavaConversions.mapAsScalaMap // java到scala的转换
val treeMap: scala.collection.mutable.Map[String, Int] = new java.util.TreeMap[String,Int] //TreeMap只能转换成mutable map import scala.collection.JavaConversions.propertiesAsScalaMap // Properties到Map的转换
val props: scala.collection.Map[String,String] = System.getProperties
二. 元组
- 元组:是不同数据类型的聚集。
(1)对偶是元组的最简单形式(2个元素的元组)
(2)元组的写法:小括号扩起来,逗号分割组元
(3)_index访问元组的组元
(4)模式匹配匹配2个元组对应的组元
(5)元组用来表示函数返回不同类型的多个值scala> val tuple1 = (1,3.14,"fred") // 不同数据类型
tuple1: (Int, Double, String) = (1,3.14,fred) scala> tuple1._1 // _index访问元组的组元
res14: Int = 1 scala> val(first,second,_) = tuple1 // 模式匹配
scala> first
res15: Int = 1 scala> "New York".partition(_.isUpper) // 函数返回不同类型的多个值
res16: (String, String) = (NY,ew ork)
- Array的zip方法,返回元组
scala> val arr1 = Array(1,2,3)
scala> var arr2 = Array("a","b","c") scala> arr1.zip(arr2)
res17: Array[(Int, String)] = Array((1,a), (2,b), (3,c))
3. Map与Tuple的更多相关文章
- Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏
本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...
- Map与Tuple
一:Map 1.创建一个不可变的map 2.创建一个可变的map 3.创建一个空的map 4.可变map添加一个元素 5.查看一个元素和修改一个元素 6.可变map删除元素 7.不可变map添加一个元 ...
- Scala编程入门---Map与Tuple
创建Map //创建一个不可变的Map val ages = Map("Leo" -> 30,"Jen" ->25,"Jack" ...
- scala中Map和Tuple
/** * Created by root * Description : Tuple and Map */ object MapTest { def main(args: Array[String] ...
- [Scala]Scala学习笔记三 Map与Tuple
1. 构造映射 可以使用如下命令构造一个映射: scala> val scores = Map("Alice" -> 90, "Kim" -> ...
- 4、map和Tuple
一.map 1.创建map //创建一个不可变的Map scala> val ages = Map("Leo" -> 30, "Jen" -> ...
- 6、scala Map和Tuple
1. 创建Map 2.访问Map元素 3.修改Map元素的值 4.遍历Map 5.SortedMap和LinkedHashMap 6.Map的元素类型Tuple 1. 创建Map 创建不可变的Ma ...
- Scala Map与Tuple
创建Map // 创建一个不可变的Map val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack&q ...
- Scala数据结构(数组,Map和Tuple)
package com.zy import scala.collection.mutable import scala.collection.mutable.ArrayBuffer object te ...
随机推荐
- leetcode之链表排序题
原文链接:点击打开链接 原题是这样的: Given a linked list and a value x, partition it such that all nodes less than x ...
- IOS中货币高精度要求使用NSDecialNumber、
float a = 0.01; int b =99999999; double c = 0.0; c = a * b; //如果单纯的使用double会导致数 ...
- JS原型链原理(链表)
任何一个对象都有一个prototype的属性,在js中可以把它记为:__proto__ 当初ECMAscript的发明者为了简化这门语言,同时又保持继承的属性,于是就设计了这个链表..在数据结 ...
- 关于form 上传文件时的小问题
平时的form一般写成这样: <form action=" " method="" id="" name=""&g ...
- linux内核启动流程[转]
启动流程一览 既然启动是很严肃的一件事,那我们就来了解一下整个启动的过程吧! 好让大家比较容易发现启动过程里面可能会发生问题的地方,以及出现问题后的解决之道! 不过,由於启动的过程中,那个启动管理程序 ...
- android图像处理系列之三--图片色调饱和度、色相、亮度处理
原图: 处理后: 下面贴代码: 一.图片处理层: package com.jacp.tone.view; import java.util.ArrayList; import android.cont ...
- 使用Ef时,对一个或多个实体的验证失败。有关详细信息,请参见“EntityValidationErrors”属性。
EntityValidationErrors 关于如何查看 EntityValidationErrors 详细信息的解决方法 我们在 EF 的编程中,有时候会遇到这样一个错误: 但是,按照他的提示 ...
- 【转】jQuery选择器总结
jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中 ...
- FROM_UNIXTIME 格式化MYSQL时间戳函数
FROM_UNIXTIME 格式化MYSQL时间戳函数 对MYSQL没有进行过深入的研究,基础知识匮乏,一遇到问题只能手册,看来要把MYSQL的学习安排进时间表了. 函数:FROM_UNIXTIME作 ...
- EditText的圆角与边框
先看一下效果图: 先创建一个xml文件edittext_shape.xml: <?xml version="1.0" encoding="utf-8"?& ...