今回は連想配列(ハッシュテーブル)について解説しよう。キーとそれに対応する値を一組の「ペア」として管理する配列だ。例えば郵便番号と市町村名、製品型番と製品名といった値同士の組み合わせを表現するのに適している。

 さっそく連想配列を作成しよう。一般的な配列と同じように、@で始めて{}でデータ群を囲む。違いは区切りがカンマ(,)ではなく、セミコロン(;)である点だ。

$htable = @{Japan = "Tokyo"; USA = 
"Washington D.C."; Egypt = "Cairo"}

 次にキーと値のペアを追加しよう。次の二つの方法がある。

$htable["Australia"] = "Canberra"
$htable.Add("Jordan","Amman")

 $htableに格納されたキーと値の組み合わせを一覧するには、「$htable」と入力すればよい(図1)。

図1●ハッシュテーブル(連想配列)
図1●ハッシュテーブル(連想配列)
キー(Name)とそれに対応する値(Value)を格納する。キーとして登録した値でアクセスできるので、簡単なデータベースなどに使える。
[画像のクリックで拡大表示]

 格納されている値は基本的には入力した順番と関係なくバラバラに並ぶ。そのままでは値をチェックするときに不便なので、キーまたは値の昇順で並べ替えよう。「GetEnumerator」メソッドを使用して、

$htable.GetEnumerator() | 
Sort Name

とする(図2)。Nameのかわりに「Value」を指定すれば、値で並べ替えられる。

図2●キーの昇順で並べ替えて表示
図2●キーの昇順で並べ替えて表示
「GetEnumerator」メソッドを使って並べ替える項目を取り出す。
[画像のクリックで拡大表示]

 特定のキーに対応する値を取り出すにはプロパティとしてキーを指定する。例えば

$htable.Japan

で「Tokyo」という結果を得られる。キーには変数も使える。

 指定したキーや値が連想配列に含まれているかどうかを検証するには、それぞれ「ContainsKey」「ContainsValue」といったメソッドを使う(図3)。例えば

図3●キーや値が存在するかどうかをメソッドで確認
図3●キーや値が存在するかどうかをメソッドで確認
ハッシュテーブルに該当するキーがあるかどうかは「ContainsKey」、値が格納されているかどうかは「ContainsValue」メソッドで判断できる。
[画像のクリックで拡大表示]
$htable.ContainsKey("Japan")

と入力すれば「True」という結果が戻ってくる。存在しない場合は「False」が戻る。

 既に存在する値を変更するには

$htable["Japan"] = "Osaka"

とする。これはキー追加と同じ書式で、指定したキーが存在していなければ追加になり、存在していれば置き換えになる。

 既存の値を削除するには、「Remove」メソッドでキーを指定する。

$htable.Remove("Jordan")
▼連想配列
キーから値を連想するイメージなので「連想配列」と呼ばれる。
▼メソッドを使用
$htable | Sort Nameとしても並びは変わらない。