Travailler avec des tables de hachage dans Unity

Une table de hachage est une collection de paires clé-valeur qui vous permet de stocker et de récupérer des données de manière efficace. Chaque clé d'une table de hachage doit être unique et elle est utilisée pour accéder à la valeur correspondante. Dans Unity, les tables de hachage font partie de l'espace de noms System.Collections et peuvent être particulièrement utiles pour stocker des structures de données non génériques.

Créer une table de hachage

Pour utiliser une table de hachage dans Unity, vous devez d'abord importer l'espace de noms System.Collections, puis initialiser un nouvel objet Hashtable. Voici un exemple:

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"]);
    }
}

Ajout et accès aux données

Vous pouvez ajouter des données à une table de hachage à l'aide de la méthode Add. Pour récupérer une valeur, utilisez la clé entre crochets:

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

Si une clé existe déjà, la tentative d'utilisation de Add génèrera une exception. Utilisez plutôt la clé directement pour mettre à jour la valeur:

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

Vérification des clés et des valeurs

Pour vérifier si une clé existe dans la table de hachage, utilisez la méthode ContainsKey. De même, utilisez ContainsValue pour vérifier une valeur:

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

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

Suppression des données

Vous pouvez supprimer une entrée de la table de hachage à l'aide de la méthode Remove:

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

Itération dans une table de hachage

Pour parcourir toutes les paires clé-valeur dans une table de hachage, utilisez une boucle foreach:

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

Limitations des tables de hachage

Les tables de hachage ne sont pas génériques et manquent de sécurité de type. Si vous avez besoin d'une meilleure sécurité de type et de meilleures performances, envisagez d'utiliser le Dictionary générique de l'espace de noms System.Collections.Generic. Les tables de hachage sont principalement utiles lorsque vous travaillez avec des collections non génériques ou que vous interagissez avec des bases de code plus anciennes.

Conclusion

Les tables de hachage dans Unity offrent un moyen simple de gérer les paires clé-valeur dans vos projets. Bien qu'elles ne constituent pas le type de collection le plus moderne, elles restent un choix valable pour de nombreux scénarios. En comprenant comment créer, accéder et manipuler les tables de hachage, vous pouvez gérer efficacement les données dans vos applications Unity.