Scala--Map映射和Tuple元祖

Map映射和Tuple元祖

1. Map映射

​ Map是一个对偶,映射的k-v键值对的集合,在一个map中可以包含若干组k-v映射关系,前提条件是k不能重复。同样map也有可变和不可变之分。

1.1 不可变Map

不可变数组进行删除修改操作返回的是一个新的数组,原数组是不会改变的。

​ import scala.collection.immutable.Map

  1. 定义

    因为Map是一个类似java中的接口,无法直接创建对象,所以需要使用它的伴生对象创建。

    val map = Map[K, V]()
    
  2. 初始化

    val map = Map[String, Integer](
                ("pgp" -> 27),
                "jdr" -> 18,
                "jdr" -> 19,
                "lhj" -> 38
            )
    
  3. crud

    /*
              * 通过get(k)获得的结果为Option(可选的)
              * 可以将option理解为java中的一个抽象类或者接口
              * option有两个仅有的子类:
              *     Some    --->代表有值
              *     None    --->没有值
              * 获取Some对应的值,可以通过some.get获取,对None调用get会报错
              *     NoSuchElementException
              * 所以为了避免这个错误,我们可以调用option的另一个方法规避:getOrElse,getOrElse中也可以同时写上key和value,如果都存在就会返回value的值
              */
    var gAge = map.get("pgp")
    println(gAge.get)
    gAge = map.get("zxn")
    println(gAge.getOrElse(-1))
    println("----获取的另外一种方式-----")
    println(map("pgp"))
    //判断key是否包含
    if(map.contains("pga")) {
        println(map("pga"))
    }
    
1.2 可变Map
  1. 定义并初始化

    //创建并初始化
    val map = mutable.Map[String, Integer](
        "zgj" -> 13
    )
    
  2. crud

    //增加元素
    map.put("lsl", 18)
    println(map)
    map("csl") = 23
    println(map)
    map.+(("xy", 15))//添加一对kv,并返回一个新的map,原map不变
    println(map)
    map += ("lk" -> 17)
    println(map)
    //获取元素--get,和不可变map一模一样
    //修改
    map("csl") = 33
    println(map)
    //删除
    //remove返回值为被删除的key对应的value,类型Option
    println(map.remove("lk"))
    
1.3 map的通用操作
  1. 集合大小

    map.size
    
  2. map的遍历

    println("-------遍历--------")
    for(aaa <- map) {
        println(aaa)
    }
    println("-----(k, v)------")
    for((k, v) <- map) {
        println(s"k=${k}, v=${v}")
    }
    println("-----foreach------")
    map.foreach(kv => {
        println(kv._1 + "--->" + kv._2)
    })
    

2. Tuple元组

  1. 定义

    元组,其实就是一组对偶,也可以理解为是java中List。映射是键/值对偶的集合。对偶足元组( tuple)的最简单形态,元组是不同类型的值的聚集。元组的值是通过将单个的值包含在圆括号中构成的。例如:(1, 3.14, “Fred”)是一个元组,类型为:Tuple3 [Int, Double, java.lang.String]

  2. 创建并初始化

    说明:元组Tuple是List,但是其长度是有范围的,最长可以容纳22个元素,也即Tuple22,其中Tuple1可以简写为Tuple。

    val t = new Tuple2[String, Int]("陈腾", 18)
    or
    val tt = ("陈腾", 18)
    
  3. 操作

    val t = new Tuple2[String, Int]("陈腾", 18)
    val tt = ("陈腾", 18)
    //获取tuple中的某一个元素
    println("name: " + tt._1)
    println("age: " + tt._2)
    val weekdays = ("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")
    for (a <- weekdays.productIterator) {
        println(a)
    }
    println("----------------------")
    val season = ("春", "夏", "秋", "冬")
    val (spring, summer, autumn, winter) = ("春", "夏", "秋", "冬")
    println("spring: " + spring)
    println("summer: " + summer)
    println("autumn: " + autumn)
    println("winter: " + winter)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值