2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

The Swift Programming Language "Collection Types"〜Dictionary(辞書)〜

Last updated at Posted at 2014-06-10

The Swift Programming LanguageのLanguage Guideの"Collection Types"よりDictionaryをざっとまとめたものです。

Objective-Cを始め、既に他の言語を習得されてる方向けです。

前章 Collection Array
次章 Control Flow

辞書

ハッシュテーブル。
そのため値は順序を持たない。

NSDictionaryとは異なり、指定した型のみを格納できる。(C++のテンプレート的)
Dictionary

キーについて

KeyTypeは、ハッシュ可能(hashable)の必要がある。

辞書リテラル

[key1: value1, key2: value2, key3: value3]

var airports: Dictionary<String,String> = ["TYO": "Tokyo", "DUB":"Dublin"]

// これもOK
var airports2 = ["TYO": "Tokyo", "DUB":"Dublin"]

var key1 = "TYO"
var key2 = "DUB"
// これもOK
var airports3 = [key1: "Tokyo", key2:"Dublin"]

アクセスと変更

個数

var airports = ["TYO": "Tokyo", "DUB":"Dublin"]
airports.count // 2

追加、変更

var airports = ["TYO": "Tokyo", "DUB":"Dublin"]

// 追加
airports["LHR"] = "London"

// 変更
airports["LHR"] = "London Heathrow"

// 変更して古いキーも取得
if let oldValue = airports.updateValue("London", forKey: "LHR") {
  println("old=\(oldValue)")
}

参照

キーに対応する値が存在しない場合は、nilを返す。(この場合、nameはString?型)
optional(nil許容)参照

var airports = ["TYO": "Tokyo", "DUB":"Dublin"]
if let name = airports["TYO"] {
  // キー"TYO"に対応する値が見つかった場合の処理
} else {
  // 値が見つからなかった場合の処理
}

削除

値にnilを設定するか、removeValueForKeyで削除できる。

var airports = ["TYO": "Tokyo", "DUB":"Dublin"]
airports["TYO"] = nil

if let removedValue = airports.removeValueForKey("DUB") {
}

探索

KeyとValueのペア

var airports = ["TYO": "Tokyo", "DUB":"Dublin"]
for (code, name) in airports {
  println("\(code)=\(name)")
}

キー配列を取得

ただし順序は保証されない。

var airports = ["TYO": "Tokyo", "DUB":"Dublin"]
airports.keys // ["TYO", "DUB"] // キーの配列を取得する。順序は、登録内容による。

値の配列を取得

ただし順序は保証されない。

var airports = ["TYO": "Tokyo", "DUB":"Dublin"]
airports.values // ["Tokyo", "Dublin"] // 値の配列を取得する。順序は、登録内容による。

空の辞書を生成

var dic = Dictionary<Int, String>()

// 一度生成した後なら、これも可能.
dic = [:] 

辞書もJavaでいう参照型っぽい

let

配列同様、letに格納すると、要素は変更できるけど、要素数は変更できなくなる。


次章 Control Flow

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?