scala 不可变Map 、 可变Map 、Map转换为其他数据类型

本文介绍了Scala中Map的基本操作,包括不可变Map和可变Map的创建、添加、删除、修改和遍历数据的方法。此外,还展示了如何将Map转换为其他数据类型,如Set、List和Array,并演示了如何安全地从Map中获取值,避免空指针异常。
摘要由CSDN通过智能技术生成

前言

  scala中Map是一种可迭代的键值对(key/value)结构。所有的值都可以通过键来获取。Map 中的键都是唯一的


1. 不可变Map

object T14 {
  def main(args: Array[String]): Unit = {
    //scala中map key不能重复 无序
    //scala中键值对,可直接采用K->V方式
    
    //key相同时,会进行覆盖
    val map = Map("a" -> 1, "b" -> 2, "c" -> 3, "a" -> 5)
    println(map)

    // 添加数据
    val map1 = map + ("d" -> 7)
    println(map1)

    // 删除数据
    val map2 = map - "a"
    println(map2)

    // 修改数据
    val map3 = map.updated("c", 9)
    println(map3)

    //合并map
    val map4 = map ++ Map(1 -> "f", 3 -> "h")
    println(map4)

    // 遍历数据
    map.foreach(println)
  }
}

在这里插入图片描述


2. 可变Map

  需引入import scala.collection.mutable

import scala.collection.mutable

object T15 {
  def main(args: Array[String]): Unit = {
    val map = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3)
    println(map)

    //key不存在,则插入;存在,则更新
    map.put("a", 3)
    println(map)

    //可变Map +增加数据,产生新的map
    val map1 = map + ("e" -> 5)
    println(map1 eq map)

    //可变Map +=增加数据,返回原来的map自身
    val map2 = map += ("e" -> 5)
    println(map2 eq map)

    //修改数据的2种方式
    map.update("c", 200)
    println(map)
    
    map("c") = 300
    println(map)

    //删除数据
    map.remove("c")
    // map - ("c")
    // map -= ("c")
    println(map)
    
    
    //清空数据
    map.clear()
    println(map)
  }
}

在这里插入图片描述

import scala.collection.mutable

object T16 {
  def main(args: Array[String]): Unit = {
    // java 若key存在,则取得value,若不存在,则返回null,hashmap可存储空键空值
    //scala 可存储空值,不可以存储空键

    val map = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3, "d" -> null)

    //map根据key查询数据,会将查询结果进行包装
    //返回结果的类型为Option[V]类型,有2个对象,Some(有值)、None(无值),以避免空指针异常

    //对于key存在的场合,那么返回结果为Some
    val value1 = map.get("a")
    println(value1)

    val value2 = map.get("d")
    println(value2)

    //对于key不存在的场合,那么返回结果为None
    val value3 = map.get("e")
    println(value3)

    //获取key对应的具体值
    println(map.get("a").get)
    println(map.get("d").get)

    //从None对象中get值,会发生异常
    // println( map.get("e").get)
    // 先判断是否为空或为空时设置默认值
    println(map.get("e").isEmpty)
    println(map.get("e").getOrElse(-1))
    //更简介的方式
    map.getOrElse("e",-1)
  }
}

在这里插入图片描述

import scala.collection.mutable

object T17 {
  def main(args: Array[String]): Unit = {
    val map = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3, "d" -> null)

    //mao 键 迭代器
    //    val keys = map.keys
    //    val iterator1 = keys.iterator

    val iterator1 = map.keysIterator
    while (iterator1.hasNext) {
      println(map.get(iterator1.next()).get)
    }
    //mao 值 迭代器
    //    val values = map.values
    //    val iterator2 = values.iterator
    val iterator2 = map.valuesIterator
    while (iterator2.hasNext) {
      println(iterator2.next())
    }
  }
}

3. Map转换为其他数据类型

object T18 {
  def main(args: Array[String]): Unit = {
    val map1 = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3)

    val set: Set[(String, Int)] = map1.toSet
    val list: List[(String, Int)] = map1.toList
    val array: Array[(String, Int)] = map1.toArray

    println(set.mkString(","))
    println(list.mkString(","))
    println(array.mkString(","))
  }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值