28Map

59 阅读2分钟

一.Map 的定义和创建

Map 创建格式:

1.不可变 Map:

val mapName: Map[KeyType, ValueType] = Map(key1 -> value1, key2 -> value2,...)

2.可变 Map(需导入scala.collection.mutable.Map):val mapName:

mutable.Map[KeyType, ValueType] = mutable.Map(key1 -> value2,...)

package map

/**
 * Map: 映射
 * 键值对, 键不能有相同的!
 * (key,value)
 *
 * 鄂 -> 湖北省
 * 湘 -> 湖南省
 * 赣 -> 江西省
 *
 * 01 -> xxx
 * 02 -> yyy
 */

object map01 {
  def main(args: Array[String]): Unit = {
    val map1 = Map(("alice" -> 90), ("bob" -> 88), ("bob" -> 100))
    // bob这个键有重复, 只保留一个
    println(map1)
  }
}

image.png

(二)Map 的常用方法

(一) 添加元素

对于可变Map

对于可变 Map,我们可以使用 += 操作符或者 put 方法来添加键值对。

添加元素到可变 Map 的格式(+= 操作符):mapName += (key -> value)

添加元素到可变 Map 的格式(put 方法):mapName.put(key, value)

对于不可变 Map(重点讲解重新创建新 Map 的方式)

添加元素到不可变 Map 的格式(通过创建新 Map):val newMapName:

Map[KeyType, ValueType] = oldMapName + (newKey ->newValue)

(二)查询元素

我们可以使用 get 方法来查询 Map 中的值,或者直接Map(key)。

查询 Map 元素的格式(get 方法):

val valueOption: Option[ValueType] = mapName.get(key)

(三)删除元素(仅针对可变 Map)

对于可变 Map,我们可以使用 -= 操作符或者 remove 方法来删除键值对。

删除可变 Map 元素的格式(-= 操作符): mapName -= key
删除可变 Map 元素的格式(remove 方法): mapName.remove(key)

package map

/**
 * Map: 映射
 * 键值对, 键不能有相同的!
 * (key,value)
 *
 * 鄂 -> 湖北省
 * 湘 -> 湖南省
 * 赣 -> 江西省
 *
 * 01 -> xxx
 * 02 -> yyy
 */

object map01 {
  def main(args: Array[String]): Unit = {
    val map1 = scala.collection.mutable.Map( ("alice" -> 90), ("bob" -> 80), ("bob" -> 100) )
    // 1 添加
    map1 += ("judy" -> 90)
    // 2 删除
    map1 -= "bob"
    // 3 查询alice
    val key = "alice"
    val ret = map1.get(key)
    if(ret.isDefined){
      println(s"${key} 对应的值是:${ret.get}")
      // 4. 循环遍历map1
      for( (a,b) <- map1 ){
        println(s"${a}, ${b}")
      }
      map1.foreach({
        case (key,value) => {
          println(s"${key}, ${value}")
        }
      })
    }

  }
}

image.png