Scala集合Map和Set

文章目录

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);

  }

猜你喜欢

转载自blog.csdn.net/zhangxm_qz/article/details/107630941