Lavorare con le tabelle hash in Unity

Una Hashtable è una raccolta di coppie chiave-valore che consente di archiviare e recuperare dati in modo efficiente. Ogni chiave in una Hashtable deve essere univoca e viene utilizzata per accedere al valore corrispondente. In Unity, le Hashtable fanno parte dello spazio dei nomi System.Collections e possono essere particolarmente utili per archiviare strutture di dati non generiche.

Creazione di una tabella hash

Per usare un Hashtable in Unity, devi prima importare lo spazio dei nomi System.Collections e poi inizializzare un nuovo oggetto Hashtable. Ecco un esempio:

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

Aggiunta e accesso ai dati

Puoi aggiungere dati a un Hashtable usando il metodo Add. Per recuperare un valore, usa la chiave tra parentesi quadre:

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

Se una chiave esiste già, il tentativo di usare Add genererà un'eccezione. Invece, usa la chiave direttamente per aggiornare il valore:

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

Controllo di chiavi e valori

Per verificare se una chiave esiste nell'Hashtable, usa il metodo ContainsKey. Analogamente, usa ContainsValue per verificare un valore:

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

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

Rimozione dei dati

È possibile rimuovere una voce dall'Hashtable utilizzando il metodo Remove:

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

Iterazione attraverso una tabella hash

Per scorrere tutte le coppie chiave-valore in una Hashtable, utilizzare un ciclo foreach:

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

Limitazioni delle tabelle hash

Le tabelle hash non sono generiche e non hanno sicurezza di tipo. Se hai bisogno di una migliore sicurezza di tipo e prestazioni, considera di usare il generico Dictionary dallo spazio dei nomi System.Collections.Generic. Le tabelle hash sono utili principalmente quando si lavora con raccolte non generiche o si interagisce con vecchie basi di codice.

Conclusione

Le tabelle hash in Unity forniscono un modo semplice per gestire le coppie chiave-valore nei tuoi progetti. Sebbene non siano il tipo di raccolta più moderno, rimangono una scelta valida per molti scenari. Comprendendo come creare, accedere e manipolare le tabelle hash, puoi gestire i dati in modo efficiente nelle tue applicazioni Unity.