概要
本記事では、キーと値のペアを格納することができる連想配列「Dictionary」クラスの基本的な使い方を紹介します。
特徴
メリット
- キーに対応する値の取得が速い。
デメリット
- メモリ使用量が多い。(追加の要素格納用に予備領域を確保しているため)
注意
- Dictionaryクラスは、同一のキーを追加することはできない。
0.全体コード
using System;
using System.Collections.Generic;
namespace ConsoleApp1
{
class Program
{
static void Main()
{
var dict1 = new Dictionary<string, int>();
// 要素の追加
dict1.Add("key1", 100);
dict1["key2"] = 200;
dict1["key3"] = 300;
// 要素の取得
int value;
if (dict1.TryGetValue("key2", out value))
{
Console.WriteLine(value);
}
// 要素の数を取得
Console.WriteLine(dict1.Count);
// キーの一覧を取得
foreach (string key in dict1.Keys)
{
Console.WriteLine(key);
}
// 値の一覧を取得
foreach (int val in dict1.Values)
{
Console.WriteLine(val);
}
// 要素の削除
dict1.Remove("key2");
// キーが存在するか判定
if (dict1.ContainsKey("key1"))
{
Console.WriteLine("key1 exists");
}
}
}
}
1.名前空間宣言
Dictionaryクラスを使用できるように名前空間の使用を宣言します。
using System.Collections.Generic;
2.初期化
変数宣言
初期値なし
初期値なしインスタンスを生成します。
var dict1 = new Dictionary<string, int>();
初期値あり
初期値ありインスタンスを生成します。
var dict1 = new Dictionary<string, int>()
{
{"key1", 100},
{"key2", 200},
{"key3", 300},
};
3.要素の追加
Addメソッド
var dict1 = new Dictionary<string, int>();
dict1.Add("key1", 100);
dict1.Add("key2", 200);
dict1.Add("key3", 300);
注意
この例では、同じキーを追加すると例外が発生します。
対策として以下の方法があります。
- 【対策1】
- 下記のキーの存在確認し、存在しない場合のみ追加します。
- 【対策2】
- 下記の[]演算子を使用し追加します。こうすることでキーが存在しない場合は追加され、キーが存在する場合はそのキーの値が更新されます。これにより例外発生しません。
[]演算子
var dict1 = new Dictionary<string, int>();
dict1["key1"] = 100;
dict1["key2"] = 200;
dict1["key3"] = 300;
4.要素の更新
[]演算子でキーに対応する値を更新します。var dict1 = new Dictionary<string, int>();
dict1["key1"] = 100;
dict1["key2"] = 200;
dict1["key3"] = 300;
5.要素の取得
TryGetValueメソッド
TryGetValue関数を使用し指定したキーに対応する値を取得し、取得できた場合は値を表示します。
int value;
if (dict1.TryGetValue("key2", out value))
{
Console.WriteLine(value);
}
[]演算子
[]演算子を使用し指定したキーに対応する値を表示します。int value = dict1["key2"];
Console.WriteLine(value);
6.要素の削除
Remove関数で指定したキーに対応する要素を削除します。
dict1.Remove("key2");
7.要素の存在確認
ContainsKey関数で指定したキーが存在するか確認できます。
if (dict1.ContainsKey("key1"))
{
Console.WriteLine("key1 exists");
}
8.要素の列挙
キーの列挙
Keysプロパティからキー一覧を取得します。
foreach (string key in dict1.Keys)
{
Console.WriteLine(key);
}
値の列挙
Valuesプロパティから値一覧を取得します。
foreach (int val in dict1.Values)
{
Console.WriteLine(val);
}
さいごに
以上がDictionaryクラスの基本的な使い方です。
見ていただきありがとうございました。