一、不可变集合
1、声明
(1)使用 -> 的方式声明
备注: 声明的Map集合的时候如果不加泛型,必须保证声明的map集合中有数据,因为有数据会自动适配,没有数据会返回Nothing
(2)使用对偶元组的方式声明
(3)Map集合在创建的时候不能使用new关键字,因为Map是一个接口
Java中也不能直接new Map,是new 的HashMap
(4)如果想new Map得导入HashMap的包
import scala.collection.immutable.HashMap
import scala.collection.immutable._
注意:当前的Map集合是一个不可变的集合,是不能改变的,所以这种声明方式没有任何意义。 因为每次放值进去会生成一个新的Map集合,等于是重新创建了一个对象。
(5)如果声明一个空的Map集合,可以往里面放值,然后形成一个新的Map集合
- 使用 + 添加元素【可以添加元组,->】
每次添加完数据都会形成新的Map集合,原来的集合值不变。
- 使用 ++ 添加一个Map集合
2、取值
(1)get方式取值
返回的是一个Option类型,如果想获取值得使用get方法:
注意:Some是一个类,是Option[选项]的子类。
(2)直接Map集合名(“key”)
(3)通过key进行取值的时候,如果没有对应的value,可以给一个默认值: getOrElse
二、可变的Map集合
1、使用时需要导包
scala.collection.mutable.Map
scala.collection.mutable.HashMap
2、声明
val m1=mutable.Map[String,Int]("zhangsan"->100,"lisi"->200)
3、常用方法
+=:添加单个map元素,或者对偶元组: put命令也是添加数据的。
-=:删除单个map元素,或者对偶元组: remove命令删除数据的,根据key删除。
++=:添加一个Map集合,是对集合的操作
val m1=mutable.Map[String,Int]() m1++=mutable.Map("zhangsan"->100,"lisi"->200)
--=:删除一个Map集合,是删除的key,使用List集合装key
val m1=mutable.Map[String,Int]("zhangsan"->100,"lisi"->200) m1--=List("zhangsan")
keySet:将key放在set集合中
keys:将key放在set集合中,和keySet方法返回值一样
keysIterator:key的迭代器
1 def main(args: Array[String]): Unit = { 2 val map=mutable.Map[String,Int](("zs",1000),("ls",2000),("ww",3000)) 3 val iterator: Iterator[String] = map.keysIterator 4 while (iterator.hasNext){ 5 val str = iterator.next() 6 println(str) //返回所有的key。 7 println(map(str)) //通过key进行取值。 8 } 9 }
清空Map集合:
-
map.clear
-
map--= map.keysIterator.toList
4、Map集合转换
toList、toSet【去重】、toBuffer(toBuffer只能转换为 ArrayBuffer不能转为 ListBuffer) 、toArray
也可将Array或Tuple的toMap方法转化为Map
toSet去重排序: