swift-集合类型02-字典的基本操作


import UIKit


class ViewController: UIViewController {

  

  override func viewDidLoad() {

    super.viewDidLoad()

    

    /**

     字典是一种存储同一种类型多条数据的存储器,以 key(键) - value(值)的形式存在

     每个独立的 key 关联一个 value ,键作为字典中的值的标识符

     和数组不同,字典是无序的,通过键访问字典

     类似于现实世界中使用字典查字义。

     

     字典在使用时需要明确存储的键和值类型,方法是通过显示的类型声明或者类型推断。

     字典声明的语法:Dictionary<KeyType, ValueType>

     其中 KeyType 是字典中键的数据类型,ValueType是字典中对应于键的值的数据类型。

     

     KeyType 的唯一限制就是必须是哈希的,这样可以保证它是唯一的,

     所有的 Swift 基本类型(例如 StringInt Double Bool)默认都是可哈希的,

     所以这些类型都可以在字典中当做键使用。

     未关联值的枚举成员默认也是可哈希的

     */

     

     /**

     字典字构造中,每一个键值对的键和值都由冒号分割,多个键值对由逗号分割,并用 [] 包含起来:

     [ key 1 :  value 1 ,  key 2 :  value 2 ,  key 3 :  value 3 ]

     

     fruit字典被声明为变量(用var关键字)而不是常量(let关键字)

     因为后来更多的信息会被添加到这个字典中。

     

     和数组一样,构造字典就也可以不用把类型定义清楚(Swift 的类型推断)。

     这个语句中所有的键和值都分别是相同的数据类型,

     Swift 可以推断出 fruit 的字典类型是 Dictionary<String, String>

     

     */

    var fruit :Dictionary<String,String> = ["1":"apple","2":"banana"]

    

    let fruit1 :Dictionary<String,String> = ["3":"pich","4":"melon"]

    print(fruit)

    print(fruit1)

    

    /**

    通过字典的方法和属性,或者使用下标语法读取和修改字典。

    和数组一样,可以通过字典的只读属性 count 来获取字典中元素的数量

    */

    print("fruit has \(fruit.count) items")

    

    /**

    使用下标语法来添加新的元素。使用 key 作为下标索引,并且分配新的值

    */

    fruit["5"] = "orange"

    print(fruit)

    

    /**

    使用下标语法来改变 key 对应的值:

    */

    fruit["5"] = "tomato"

    print(fruit)

    

    

    /**

     字典的 updateValue(forKey:) 方法可以添加或者更新 forKey 对应的值。

     如上面的示例,updateValue(forKey:) 方法在 forKey 不存在对应值的时候增加值,存在的时候更新对应已存在的值。

     这个方法返回更新值之前的原值。以方便我们检查更新是否成功。

     updateValue(forKey:) 方法返回的是包含一个字典值类型的可选值。

     举例来说:对于存储 String 值的字典,这个函数会返回一个 String? 或者可选 String” 类型的值。

     如果值存在,则这个可选值就是被替换的值,否则是nil

     */

    

    let string1 = fruit.updateValue("melon", forKey: "2")

    print("string1 == \(string1)")

    print(fruit)

    

    let string2 = fruit.updateValue("sky", forKey: "3")

    print(string2)

    print(fruit)

    

    /**

     使用下标语法访问字典中 key 对应的 value

     由于 key 对应的 value 可能是不存在的,所以返回的是可选类型,

     如果值存在,返回对应的值,否则就返回nil

     */

    let string3 = fruit["10"]

    print("string3 == \(string3)")

    

    /**

    通过使用下标语法给某个键对应的值赋值为 nil ,来从字典里移除一个键值对。

    */

    fruit["other"] = "nicai"

    print(fruit)

    fruit["other"] = nil

    

    print(fruit)

    

    /**

     另外,removeValueForKey 方法也可以用来从字典中移除键值对。

     如果键值对存在,移除该键值对并且返回被移除的 value;否则返回 nil

     */

    let remove1 = fruit.removeValueForKey("1")

    print(fruit)

    print(remove1)

    let remove2 = fruit.removeValueForKey("10")

    print(remove2)

    print(fruit)

    

  }

  

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值