[Swift] Dictionaryの使い方

SwiftのDictionaryを使ってみた。
よくあるHashmap的なやつね。
 

宣言はこんな具合


// 空Dictionaryの宣言
var emptydictionaly = Dictionary<String,Int>()

// Dictionalyの宣言
// ※型は省略可能です
var populationDict:Dictionary<String,Int>  = [
    "kanazawa":10,
    "komatsu":100000,
    "nanao":50000
]

 

保存している値へのアクセス方法


// 値の取得
// Dictionalyから値を求めるとoptionalな値が帰ってくる
let kanazawaOpt = populationDict["kanazawa"]
NSLog("kanazawa population:%d",kanazawaOpt!)


// 値の追加
populationDict["kaga"] = 60000
populationDict.updateValue(38000,forKey:"suzu")


// 値の上書き
// こんな素直な書き方も可能だけど
populationDict["kanazawa"] = 1000000

// updateValueを使うと変更前の値をOptionalで取得できる
if let oldvalue = populationDict.updateValue(460000,forKey:"kanazawa") {
    NSLog("old kanazawa population:%d",oldvalue)
}


// 要素の削除
// nilを入れることで要素が削除される
populationDict["nanao"] = nil

// removeValueForKeyを使うと削除と同時に古い値を取得できる
if let oldvalue = populationDict.removeValueForKey("komatsu") {
    NSLog("old komatsu population:%d",oldvalue)
}


// ちなみにletでDictionalyを宣言すると要素を変更することができない
// ※arrayではletでも上書きできちゃう。。
let immutableDict = ["A":1]
// ↓でエラーとなる
//immutableDict["A"] = 2

 

要素の列挙、ループ処理


var totalPopulataion = 0

// for-each的なループ
// キーと値を一緒に取得
for (city,population) in populationDict {    
    totalPopulataion += population
}
NSLog("合計:\(totalPopulataion)")


// キーのみを求めてループ
for city in populationDict.keys {
    NSLog("city:\(city)")
}

 

Dictionalyは構造体(Structure)なので値型!
なので下記では複写元と複写先では違う値が取得される


// 参照を別の変数に代入して値を書き換える
populationDict["kanazawa"] = 460000
var copiedDict = populationDict
copiedDict["kanazawa"] = 90000

// でも元の値は書き換わっていない
NSLog("populationDict:%d copiedDict:%d",populationDict["kanazawa"]!,copiedDict["kanazawa"]!)
// ・・・ populationDict:460000 
//        copiedDict    :90000

 

[Swift] Dictionaryの使い方」への1件のフィードバック

  1. ピンバック: SwiftのDictionaryでfor-eachループ | Hack

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です