0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unity学習記録 #011 コレクション(ディクショナリ)

Posted at

コレクション

複数のデータをひとまとめにして管理できる変数で代表的なものは3つ
・配列(要素数が固定されて扱われる代表的なデータ構造)
・リスト(要素の追加、削除、挿入ができるデータ構造)
・ディクショナリ(要素に "キー" と "値" がセットで格納させるデータ構造)

今回はディクショナリ(Dictionary)について学習していきます。

ディクショナリ

ディクショナリは要素に "キー" と "値" がセットで格納させるデータの配列構造を持ちます。値に関しては重複してもいいですが、同じスコープ内で重複するキーは設定できません。また、リスト同様に要素は可変的に使用できます。

ディクショナリの宣言

まずは構文です。

Dictionary<キーの型, 値の型> dictionary = new Dictionary<キー, >();

初期値を設定するコードを書いてみます。
一行で記述してもいいですが、長くなるので要素ごとに改行してコードを見やすくしています。

//初期値を設定する場合
Dictionary<string, int> myDictionary = new Dictionary<string, int>(){
    { "apple", 10 },
    { "banana", 20 },
    { "orange", 30 }
};

//初期値を設定しない場合
Dictionary<string, int> myDictionary = new Dictionary<string, int>();

要素の呼び出し

配列やリストはインデックス番号を指定して要素の値を呼び出しました。
ディクショナリはキーを指定して、対応する値を呼び出します。

//キーに対応する値を呼び出し
Dictionary<string, int> myDictionary = new Dictionary<string, int>(){
    { "apple", 10 },
    { "banana", 20 },
    { "orange", 30 }
};

Debug.Log(myDictionary["apple"]);

ディクショナリに登録されている全てのキーと値をセットで呼び出すコードを書いてみます。
変数の中身を確認するときに便利です。

// すべての要素(キー:値)をコンソールに書き出し
Dictionary<string, int> myDictionary = new Dictionary<string, int>(){
    { "apple", 10 },
    { "banana", 20 },
    { "orange", 30 }
};

foreach (KeyValuePair<string, int> pair in myDictionary)
{
    Debug.Log($"{pair.Key}: {pair.Value}");
}

要素の追加・削除

次に、要素を添削するコードの書き方をみてみます。

//要素の追加・削除
Dictionary<string, int> myDictionary = new Dictionary<string, int>();

// キーと値を追加
myDictionary.Add("apple", 10);
myDictionary.Add("banana", 20);
myDictionary.Add("orange", 30);

//要素の確認
foreach (KeyValuePair<string, int> pair in myDictionary)
{
    Debug.Log($"{pair.Key}: {pair.Value}");
}

//要素の削除
myDictionary.Remove("banana");

//要素の確認
foreach (KeyValuePair<string, int> pair in myDictionary)
{
Debug.Log($"{pair.Key}: {pair.Value}");
}

キーが存在するかの確認

要素にキーが存在するかを調べる方法を書いてみます。
bool値で結果を返します。

//キーの存在確認
Dictionary<string, int> myDictionary = new Dictionary<string, int>(){
    { "apple", 10 },
    { "banana", 20 },
    { "orange", 30 }
};

// キーが存在するかどうかを確認
Debug.Log(myDictionary.ContainsKey("banana"));
Debug.Log(myDictionary.ContainsKey("grape"));

値の変更

値の変更はキーを指定して、更新したい値を記述します。

Dictionary<string, int> myDictionary = new Dictionary<string, int>(){
    { "apple", 10 },
    { "banana", 20 },
    { "orange", 30 }
};

myDictionary["apple"] = 15;
Debug.Log(myDictionary["apple"]);

キーの変更はできません。変更したい場合は、一度キーを削除して新たにキーと値をセットで追加します。

添書

これまでに記載した記事で主要な制御構文は一通り学習しました。
メモ程度の内容ですが、他の制御構文も気になる方はぜひ他の記事も併せて見てください。

クラスやインスタンス、メソッドなどまだ学習する内容はありますが、今後はUnityで小規模なプロジェクト(ゲーム開発が学習しやすいと思っている)を作りながら重要だと思う部分を切り出してメモを残していこうと思います。
反復学習で必要な情報があれば随時それぞれの記事に追加・修正していこうと思います。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?