Map
Scala中的Map和Java类似,是一个散列表 存储的内容也是 键值对 Scala中不可变Map是有序的 可变Map是无序 的
可变Map scala.collection.mutable.Map
不可变Map scala.collection.immutable.Map
操作示例如下
def main(args: Array[String]): Unit = {
//构造不可变Map
/*
默认 使用 不可变map
在map底层,每队 key-value 都是Tuple2
*/
val map = Map("name"->"zhangsan","age"->10)
//不可变map是有序的 所以输出map内容顺序和定义时完全一样
println(map)//Map(name -> zhangsan, age -> 10)
//构造可变map
val map2 = mutable.Map("name"->"zhangsan","age"->10)
//可变map是无序的因此 输出map内容顺序和 定义时不同
println(map2)//Map(age -> 10, name -> zhangsan)
//构造空的映射
val map3=new mutable.HashMap[Any,Any]
println(map3)
//通过对偶元组的方式创建Map
//对偶元组 就是二元组 包含两个元素的元组
val map4= mutable.Map(("name","zhangsan"),("age","10"));
println(map4)
//map取值 方式一map4("name")
//如果key 存在 则 直接返回对应的值 否则 报异常:java.util.NoSuchElementException
println(map4("name"))//zhangsan
// println(map4("name2"))//报异常
//判断key是否存在
//通过该判断可以避免异常
println(map4.contains("name"))
//map取值 方式二 map4.get("name").get
/*
通过 get(key) 将数据进行封装
如果key 存在则返回some 否则 返回none
调用get时如果key存在则返回值否则 报异常
*/
println(map4.get("name").get)
//println(map4.get("name2").get) //抛出异常
/*
map取值方式3 map4.getOrElse("name1","defaultname")
如果key 不存在,那么返回默认值
如果key 存在,那么返回对应值
*/
println(map4.getOrElse("name1","defaultname"))
//修改取值
map4("sex")="男"//新增
map4("name")="lisi" //修改
println(map4)
// map("sex")="男"//不可变map会报错
//map("name")="lisi"//不可变map会报错
//添加元素 添加元素时如果key 不存在则 添加如果存在则更新
// val map4 = mutable.Map((),());
map4 += ("mail"->"com.cn")
map4 += ("sex"->"nv")//已经存在的会覆盖
println(map4)
//添加多个元素
map4 += ("mail2"->"com.cn","A"->"AA")
println(map4)
val map5 = map4+ ("mail3"->"com.cn","B"->"BB")
println(map4)
//删除元素
map4 -= ("A","B")//删除 key A B 如果key存在则删除,如果key 不存在也不报错
//map4 = map4 - ("mail2")
println(map4)
//元素遍历
println(" for((k,v)<-map4) println(k+\"=\"+v)")
for((k,v)<-map4) println(k+"="+v)
println("for(k<-map4.keys) println(map4(k))")
for(k<-map4.keys) println(map4(k))
println(" for(v<-map4.values) println(v)")
for(v<-map4.values) println(v)
println("for(item <-map4) println(item._1+\"===\"+item._2)")
for(item <-map4) println(item._1+"==="+item._2)
}
Set
Set是不重复元素的集合,Set是无序的
默认情况下 Scala使用的是不可变集合:
操作示例
def main(args: Array[String]): Unit = {
val set = Set(1,3,3)
println(set)
val set2= mutable.Set(1,3,2);
println(set)
//可变Set添加元素
//对象已经存在的话 不会重复添加 也不报错
set2.add(4)
set2+=5
set2.+=(6,7);
println(set2)
//元素删除
//如果删除对象不存在 则不操作 也不报错
set2-=3;//操作符形式
set2.remove(1) //方法形式
set2.remove(10)
println(set2)
//遍历
for(x<-set2) println(x);
}