一. Map

  1. 对偶

    (1)对偶是一个映射。多个对偶形成map

    (2)对偶的表示:(k,v)或者k->v
  2. 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)
```
  1. 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. 元组:是不同数据类型的聚集。

    (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)
  2. 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的更多相关文章

  1. Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏

    本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...

  2. Map与Tuple

    一:Map 1.创建一个不可变的map 2.创建一个可变的map 3.创建一个空的map 4.可变map添加一个元素 5.查看一个元素和修改一个元素 6.可变map删除元素 7.不可变map添加一个元 ...

  3. Scala编程入门---Map与Tuple

    创建Map //创建一个不可变的Map val ages = Map("Leo" -> 30,"Jen" ->25,"Jack" ...

  4. scala中Map和Tuple

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

  5. [Scala]Scala学习笔记三 Map与Tuple

    1. 构造映射 可以使用如下命令构造一个映射: scala> val scores = Map("Alice" -> 90, "Kim" -> ...

  6. 4、map和Tuple

    一.map 1.创建map //创建一个不可变的Map scala> val ages = Map("Leo" -> 30, "Jen" -> ...

  7. 6、scala Map和Tuple

    1.  创建Map 2.访问Map元素 3.修改Map元素的值 4.遍历Map 5.SortedMap和LinkedHashMap 6.Map的元素类型Tuple 1.  创建Map 创建不可变的Ma ...

  8. Scala Map与Tuple

    创建Map // 创建一个不可变的Map val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack&q ...

  9. Scala数据结构(数组,Map和Tuple)

    package com.zy import scala.collection.mutable import scala.collection.mutable.ArrayBuffer object te ...

随机推荐

  1. zoj3623 Battle Ships ——完全背包?简单DP!|| 泛化背包

    link:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3623 看起来像完全背包,但是物品价值是变化的,所以很多人搞的很复 ...

  2. U盘

    U盘里的.Trashes是什么文件,要怎么去掉?为什么会出现这个文件? 这是苹果电脑的垃圾文件. 1.在苹果电脑上删除文件后,没有清空回收站,就会留下这些文件. 2.可以重新插入Mac, 然后会发现T ...

  3. 黑马程序员——JAVA基础之多线程的线程间通讯等

    ------- android培训.java培训.期待与您交流! ---------- 线程间通讯: 其实就是多个线程在操作同一个资源,但是动作不同. wait(); 在其他线程调用此对象的notif ...

  4. java的nio之:unix内核的五种I/O通信模型

    一:根据unix的网络编程对I/O模型的分类,UNIX提供了5种I/O模型===>阻塞I/O模型:最常用的I/O模型.所有文件操作都是阻塞的.我们以套接字接口为例讲解此模型:在进程空间中调用re ...

  5. PHP递归题目

    $arr = [ 'a' => 'A', 'b' => 'B', 'c' => [ 'd'=> 'D', 'e'=>[ 'f'=>'F', 'g'=>['h' ...

  6. Object-c 语言

    字符串操作: http://www.myexception.cn/mobile/455287.html 1,判断两字符串是否相同 NSString *str1 = @"hello pepe& ...

  7. PHP获得两个绝对路径的相对路径

    周末在家看面试题,没事儿写了个. 题目: 写一个函数,算出两个文件的相对路径 如 $a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php';计算出 $b 相对于 $ ...

  8. ABBYY如何把图片转换成pdf格式

    在制作工作文件的时候,有时候会遇到需要进行文件格式转换的情况,比较常见的文件格式转换就包含了Office与pdf格式之间的转换.但除此之外,图片与pdf格式也是可以进行转换的,那么图片要怎么操作,才能 ...

  9. ABBYY FineReader的快速任务功能如何用

    在使用ABBYY FineReader Pro for Mac OCR文字识别软件处理文档时,经常会执行一系列相同的步骤,如扫描.识别.将已识别文本导出为特定格式或导出至特定应用程序.针对经常执行的任 ...

  10. 怎么用CorelDRAW插入、删除与重命名页面

    在绘图之前,页面的各种设置也是一项重要的工作,本文主要讲解如何在CorelDRAW中插入.删除.重命名页面等操作.在CorelDRAW的绘图工作中,常常需要在同一文档中添加多个空白页面,删除一些无用的 ...