Работа с хеш-таблицами в Unity

Hashtable — это коллекция пар «ключ-значение», которая позволяет эффективно хранить и извлекать данные. Каждый ключ в Hashtable должен быть уникальным и используется для доступа к соответствующему значению. В Unity Hashtables являются частью пространства имен System.Collections и могут быть особенно полезны для хранения неуниверсальных структур данных.

Создание хеш-таблицы

Чтобы использовать Hashtable в Unity, сначала нужно импортировать пространство имен 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"]);
    }
}

Добавление и доступ к данным

Вы можете добавлять данные в Hashtable с помощью метода 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

Проверка ключей и значений

Чтобы проверить, существует ли ключ в Hashtable, используйте метод 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);
}

Ограничения хеш-таблиц

Хеш-таблицы не являются универсальными и не обеспечивают безопасность типов. Если вам нужна лучшая безопасность типов и производительность, рассмотрите возможность использования универсального Dictionary из пространства имен System.Collections.Generic. Хеш-таблицы в основном полезны при работе с неуниверсальными коллекциями или при взаимодействии со старыми кодовыми базами.

Заключение

Hashtables в Unity предоставляют простой способ управления парами ключ-значение в ваших проектах. Хотя они не являются самым современным типом коллекции, они остаются допустимым выбором для многих сценариев. Понимая, как создавать, получать доступ и манипулировать Hashtables, вы можете эффективно управлять данными в своих приложениях Unity.