scala学习笔记-Map与Tuple(10)

创建Map

 1 // 创建一个不可变的Map
 2 val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
 3 ages("Leo") = 31
 4 // 创建一个可变的Map
 5 val ages = scala.collection.mutable.Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
 6 ages("Leo") = 31
 7 // 使用另外一种方式定义Map元素
 8 val ages = Map(("Leo", 30), ("Jen", 25), ("Jack", 23))
 9 // 创建一个空的HashMap
10 val ages = new scala.collection.mutable.HashMap[String, Int]

访问Map的元素

1 // 获取指定key对应的value,如果key不存在,会报错
2 val leoAge = ages("Leo")
3 val leoAge = ages("leo")
4 
5 // 使用contains函数检查key是否存在
6 val leoAge = if (ages.contains("leo")) ages("leo") else 0
7 
8 // getOrElse函数
9 val leoAge = ages.getOrElse("leo", 0)

修改Map的元素

 1 // 更新Map的元素
 2 ages("Leo") = 31
 3 // 增加多个元素
 4 ages += ("Mike" -> 35, "Tom" -> 40)
 5 // 移除元素
 6 ages -= "Mike"
 7 // 更新不可变的map
 8 val ages2 = ages + ("Mike" -> 36, "Tom" -> 40)
 9 // 移除不可变map的元素
10 val ages3 = ages - "Tom"

遍历Map

1 // 遍历map的entrySet
2 for ((key, value) <- ages) println(key + " " + value)
3 // 遍历map的key
4 for (key <- ages.keySet) println(key)
5 // 遍历map的value
6 for (value <- ages.values) println(value)
7 // 生成新map,反转key和value
8 for ((key, value) <- ages) yield (value, key)

SortedMap和LinkedHashMap

1 // SortedMap可以自动对Map的key的排序
2 val ages = scala.collection.immutable.SortedMap("leo" -> 30, "alice" -> 15, "jen" -> 25)
3 
4 // LinkedHashMap可以记住插入entry的顺序
5 val ages = new scala.collection.mutable.LinkedHashMap[String, Int]
6 ages("leo") = 30
7 ages("alice") = 15
8 ages("jen") = 25

Map的元素类型—Tuple

 1 // 简单Tuple
 2 val t = ("leo", 30)
 3 
 4 // 访问Tuple
 5 t._1
 6 
 7 // zip操作
 8 val names = Array("leo", "jack", "mike")
 9 val ages = Array(30, 24, 26)
10 val nameAges = names.zip(ages)
11 for ((name, age) <- nameAges) println(name + ": " + age)

 

posted @ 2017-04-15 00:05  java一生  阅读(256)  评论(0编辑  收藏  举报