Unity でハッシュテーブルを操作する

ハッシュテーブルは、データを効率的に保存および取得できるキーと値のペアのコレクションです。ハッシュテーブル内の各キーは一意である必要があり、対応する値にアクセスするために使用されます。Unity では、ハッシュテーブルは System.Collections 名前空間の一部であり、非汎用データ構造を保存する場合に特に便利です。

ハッシュテーブルの作成

Unity で Hashtable を使用するには、まず System.Collections 名前空間をインポートし、新しい Hashtable オブジェクトを初期化する必要があります。次に例を示します。

using System.Collections;
using UnityEngine;

public class HashtableExample : MonoBehaviour
{
    void Start()
    {
        Hashtable myHashtable = new Hashtable();

        // Adding key-value pairs
        myHashtable.Add("PlayerName", "Alex");
        myHashtable.Add("Score", 1500);
        myHashtable.Add("Level", 5);

        // Accessing values
        Debug.Log("Player Name: " + myHashtable["PlayerName"]);
        Debug.Log("Score: " + myHashtable["Score"]);
        Debug.Log("Level: " + myHashtable["Level"]);
    }
}

データの追加とアクセス

Add メソッドを使用して、ハッシュテーブルにデータを追加できます。値を取得するには、角括弧内のキーを使用します。

myHashtable.Add("Health", 100);
int health = (int)myHashtable["Health"];
Debug.Log("Health: " + health);

キーがすでに存在する場合、Add を使用しようとすると例外がスローされます。代わりに、キーを直接使用して値を更新します。

myHashtable["Health"] = 80; // Updates the value associated with the key

キーと値の確認

ハッシュテーブルにキーが存在するかどうかを確認するには、ContainsKey メソッドを使用します。同様に、値を確認するには ContainsValue を使用します。

if (myHashtable.ContainsKey("Score"))
{
    Debug.Log("Score exists: " + myHashtable["Score"]);
}

if (myHashtable.ContainsValue(1500))
{
    Debug.Log("Value 1500 is in the Hashtable.");
}

データの削除

Remove メソッドを使用して、ハッシュテーブルからエントリを削除できます。

myHashtable.Remove("Level");
Debug.Log("Level removed.");

ハッシュテーブルの反復処理

ハッシュテーブル内のすべてのキーと値のペアを反復処理するには、foreach ループを使用します。

foreach (DictionaryEntry entry in myHashtable)
{
    Debug.Log("Key: " + entry.Key + ", Value: " + entry.Value);
}

ハッシュテーブルの制限

ハッシュテーブルは非ジェネリックであり、型の安全性に欠けています。より優れた型の安全性とパフォーマンスが必要な場合は、System.Collections.Generic 名前空間のジェネリック Dictionary の使用を検討してください。ハッシュテーブルは、主に非ジェネリック コレクションを操作する場合や、古いコードベースとインターフェイスする場合に役立ちます。

結論

Unity のハッシュテーブルは、プロジェクト内のキーと値のペアを管理する簡単な方法を提供します。最新のコレクション タイプではありませんが、多くのシナリオで有効な選択肢です。ハッシュテーブルの作成、アクセス、操作方法を理解することで、Unity アプリケーションでデータを効率的に管理できます。