‫E in questa lezione tratteremo le tabelle hash e in seguito esamineremo anche i dizionari.
‫Quindi le tabelle hash e i dizionari sono alcune delle raccolte più utili in C Sharp.
‫Quindi vedremo come definirli e come usarli, e nel qual caso dovremmo sfruttarli per
‫capire il concetto di hashing e tabelle.
‫Innanzitutto, pensa a un vero dizionario.
‫Quindi supponiamo di avere un dizionario tedesco e inglese in cui ogni parola in tedesco corrisponde a una sola
‫parola in inglese, perché questo sarebbe il limite qui.
‫Quindi, quando proviamo a tradurre la parola auto, che in tedesco si traduce sostanzialmente in auto
‫in inglese, usiamo una parola come parola chiave che possiamo cercare, ad esempio, e come risultato otteniamo una
‫traduzione.
‫Quindi c'è sempre questo rapporto uno a uno.
‫Quindi abbiamo l'auto e questo si traduce in auto.
‫E possiamo ottenere esattamente questo, anche usando tabelle hash e useremo questo in un esempio molto specifico
‫qui.
‫Quindi diciamo che abbiamo un sistema di registrazione degli studenti in cui ogni studente ha un ID e molti altri
‫dati, come nome, età, voti e foto e così via.
‫Affinché un tale sistema funzioni, avremo bisogno di un ID speciale per ogni singolo studente.
‫Quindi deve essere unico.
‫Se dovessimo memorizzare questi dati utilizzando una tabella hash o un dizionario, l'ID studente sarebbe la chiave e
‫i dati dello studente sarebbero un oggetto che contiene tutte le altre informazioni sugli studenti e questo sarebbe il
‫valore.
‫Quindi abbiamo sempre questa coppia chiave-valore.
‫OK, è così che puoi trovare i dati effettivi, per così dire, e questo è il valore che c'è dietro.
‫Quindi puoi vederlo come un armadietto.
‫Quindi questa è l'idea dell'armadietto o della posizione dell'armadietto.
‫Potrebbero essere diversi tipi di dati.
‫Non deve essere un ID e questo sarà il valore.
‫Quindi il dizionario, devono essere dello stesso tipo in una tabella hash.
‫Possono essere di diversi tipi.
‫Quindi questo potrebbe essere un numero intero e questo potrebbe essere un oggetto, per esempio.
‫Quindi esamineremo prima le tabelle hash.
‫Pertanto, creeremo una nuova classe o in realtà ho preparato una nuova classe per questo.
‫Mettiamolo qui.
‫E ha un paio di proprietà.
‫Ha una proprietà ID, una proprietà name e il GPA.
‫E poi abbiamo un costruttore molto semplice che assegna semplicemente il valore.
‫Quindi, qualunque ID passiamo all'oggetto studente quando lo creiamo sarà l'ID di quell'oggetto studente e così
‫via.
‫OK, quindi niente di eccezionale qui.
‫Stiamo solo usando una classe normale come abbiamo trattato nel capitolo della classe.
‫Ora, potremmo, ovviamente, andare avanti e creare questa classe in un file separato in modo da
‫poter andare avanti e aprire il nostro esploratore di soluzioni.
‫Vai avanti e crea un nuovo file qui.
‫Quindi aggiungi un nuovo elemento o una nuova classe come studente di scuola e college.
‫Ma per questo esempio, lo manterrò semplice e lo metterò in un unico file.
‫Come sai, è buona norma inserirlo in un file separato in modo da non mischiare le cose e
‫trovare più facilmente file e classi e tutto il resto.
‫OK, quindi ora che abbiamo la nostra classe per studenti, possiamo andare avanti e creare una tabella hash.
‫OK, quindi all'interno del nostro programma qui, nel metodo principale, è lì
‫che definirò una nuova tabella hash e sarà come, quindi tabella hash e chiamerò questa tabella, che sarà
‫nuova tabella hash.
‫La classe della tabella hash è all'interno delle raccolte di sistema, quindi dobbiamo aggiungere questo spazio dei nomi qui usando il sistema
‫che le raccolte, quindi la tabella hash ed è diverso dallo spazio dei nomi delle tabelle hash perché è così che
‫ho chiamato my che potrebbe confondere la nostra idea qui se vogliamo per entrare nella tabella hash senza che questo spazio dei nomi
‫sia stato aggiunto al nostro progetto.
‫Ma ora che lo abbiamo all'interno della nostra classe di programmi, possiamo usarlo.
‫Quindi abbiamo questa nuova tabella hash, che ora sarà una tabella di dati e possiamo inserire i dati che vogliamo
‫lì.
‫Ecco come creare una tabella hash di questo tipo, come inizializzarla con un oggetto tabella hash come abbiamo
‫fatto qui.
‫Quindi ora quello che possiamo fare è assegnare valori a questa tabella hash e potremmo anche chiamarla tabella studenti per
‫rendere il nostro codice un po' più leggibile.
‫Quindi ora dobbiamo solo creare un gruppo di studenti che vogliamo avere nella nostra tabella.
‫Quindi lasciami aggiungere anche quelli qui.
‫Li chiamerò Studd un inizio da due a tre a quattro, e saranno tutti nuovi oggetti per studenti.
‫Quindi qui questo sarà lo studente con l'ID.
‫Uno sarà Maria Chiasm GPA di 98.
‫E abbiamo Jason, che avrà l'idea di uno.
‫Questa è questa idea, l'identificatore univoco, per così dire, e poi il GPA che hanno gli studenti.
‫OK, ora abbiamo tutti quegli studenti e possiamo assegnarli alla nostra tabella studenti utilizzando l'ID dello studente.
‫E la buona pratica sarebbe quella di andare avanti e rimanere al tavolo degli studenti che aggiungono.
‫E qui rubavamo una I. D. Quindi questo qui, la proprietà come chiave.
‫Quindi puoi vedere qui una tabella hash che ci consente di avere un oggetto di tipo key off in modo che
‫possa essere qualsiasi tipo di oggetto come chiave e può essere un oggetto facoltativo o nullable ha il valore in modo che possiamo assegnare un
‫valore che può essere null , ma assegneremo un valore e quello sarà lo studente stesso in questo modo.
‫OK, ora abbiamo aggiunto il nostro studente uno alla nostra tabella studenti e possiamo fare la stessa cosa con gli altri
‫studenti e useremo il loro ID per ciascuno di loro.
‫Quindi usiamo la tabella degli studenti qui per tutti i.
‫OK, quindi questa è la nostra tabella hash ora.
‫Ma come possiamo recuperare le voci, quindi come possiamo recuperare le voci dalla nostra tabella hash?
‫Bene, diamo un'occhiata a diversi modi per farlo.
‫Quindi la prima cosa che possiamo fare è creare un oggetto studente qui.
‫Quindi studente e questo oggetto verranno chiamati studente memorizzato.
‫OK, prenderò il valore dello studente dalla mia tabella.
‫Quindi, in questo caso, è il tavolo dello studente.
‫Tavolo degli studenti in questo modo.
‫E qui, in modo simile a come mi alleno in un array, come X è un valore in un array, posso accedervi tramite
‫un ID.
‫Quindi qui, ad esempio, diciamo che voglio prendere quello di Idy uno così.
‫Quindi qui il problema è che questa tabella hash può avere valori di tipo oggetto.
‫Esatto, come abbiamo visto prima.
‫Quindi qui, se andiamo avanti e chiamiamo il metodo ADD, puoi vedere che possiamo assegnare una chiave, ma poi il valore
‫sarà di tipo oggetto.
‫E questo significa che questo qui sarà di tipo oggetto.
‫Ma non possiamo assegnare solo un tipo di oggetto allo studente.
‫Deve essere di tipo studente perché questo studente è in realtà di tipo studente.
‫OK, quindi dobbiamo assicurarci di lanciarlo in uno studente qui e poi funzionerà.
‫OK, quindi stiamo lanciando questo oggetto in uno studente perché sappiamo che all'interno del tavolo dello studente nella
‫posizione uno.
‫Quindi all'ID uno il valore sarà infatti di tipo studente.
‫OK, quindi qui puoi prendere lo studente in uno, potresti anche ottenere l'ID studente e così via.
‫Ma funziona solo perché sappiamo che stiamo usando in effetti questi numeri.
‫Quindi se vuoi ottenerlo, altrimenti potresti usare stand one by ID.
‫Quindi questo ora ti darà il valore dietro l'ID studente uno.
‫Quindi questo ti darà sostanzialmente questo valore.
‫Ecco gli studenti qui.
‫Ed è questo per essere precisi, quindi questo qui, perché è quello che stiamo immagazzinando in questo.
‫Quindi ora possiamo andare avanti e fare qualcosa del genere in cui ora invece di Friday Hello World, scriveremo effettivamente qualcosa di utile,
‫in cui scriviamo lo studente I. D. , il nome dello studente e
‫il suo GPA.
‫Quindi useremo l'ID univoco dello studente.
‫Quindi otteniamo il suo ID, otteniamo il suo nome e otteniamo il suo GPA e in questo caso come il suo GPA e
‫così via, perché è Marea alla posizione uno che voglio.
‫OK, quindi eseguiamo questo e puoi vedere gli ID degli studenti.
‫Un nome è Maria Antipas, 98 anni.
‫Quindi qui abbiamo visto come possiamo creare una tabella hash.
‫Questo è il modo in cui possiamo memorizzare i dati e quindi la tabella hash.
‫In realtà, è qui che memorizziamo i dati e una tabella hash.
‫Ed ecco come possiamo recuperare i dati da una tabella hash.
‫Quindi ora supponiamo di voler effettivamente stampare tutti i dati all'interno della nostra tabella hash e non abbiamo
‫una chiave particolare a nostra disposizione.
‫Possiamo semplicemente farlo ottenendo tutte le chiavi dalla nostra tabella hash per risolvere questo problema.
‫Innanzitutto, dobbiamo discutere una struttura chiamata voce del dizionario ogni volta che aggiungiamo una nuova voce alla nostra tabella
‫hash.
‫Quindi la nostra coppia di valori chiave e il nuovo oggetto voce del dizionario verranno creati per noi e verranno inseriti nella
‫nostra tabella hash, il che significa che una tabella hash è fondamentalmente una raccolta di voci del dizionario.
‫Quindi, utilizzando un oggetto temporaneo di voce nel dizionario, possiamo esaminare la nostra tabella hash utilizzando un ciclo for each.
‫Quindi diamo un'occhiata a questo in questo particolare esempio qui dove andrò avanti e lo userò per ogni ciclo
‫qui.
‫E questo per ogni tipo di ciclo sarà la voce del dizionario.
‫Questa è la struttura di cui parlavo.
‫Puoi vedere qui la voce del dizionario della struttura.
‫Quindi qual è il nome dell'oggetto che userò?
‫Userò entry.
‫Certo, potresti chiamare lo studente o altro, perché sai che le voci saranno di tipo
‫studente.
‫Ma diciamo che non lo sai.
‫Puoi anche chiamarlo ingresso.
‫E poi qual è la collezione in cui vogliamo farla scorrere o da cui vogliamo ottenere i valori?
‫E quello sarà il tavolo dei nostri studenti.
‫Quindi questo recuperare.
‫Articolo singolo con ID noto.
‫E qui.
‫Recupera tutti i valori da una tabella hash.
‫OK, quindi una voce all'interno della nostra tabella hash è di tipo dizionario, come ho appena detto.
‫Quindi questo ci permette ora di affrontare questo.
‫Tabella la tabella degli studenti e fondamentalmente visualizza i valori, quindi qui, perché entry, il valore restituirà un oggetto che puoi vedere qui,
‫dice oggetto, ma quello che vogliamo per ottenere i dettagli dello studente sarà un
‫oggetto studente.
‫Quello che dobbiamo fare è fare quanto segue in modo da creare un valore temporaneo, che sarà il
‫nostro valore di ingresso.
‫Ora abbiamo lo stesso problema che abbiamo avuto quassù, OK, dove dobbiamo proiettarlo in uno studente perché è solo
‫un oggetto.
‫Destra.
‫Ma vogliamo che sia di tipo studenti in modo da poter accedere alle proprietà degli studenti.
‫Quindi, perché altrimenti il valore di ingresso pensava di non averlo qui.
‫Non posso accedere al suo ID, non posso accedere al suo nome, tutta quella roba, anche se esiste lì dentro.
‫Ma il nostro ID semplicemente non lo consente perché dobbiamo prima assicurarci di convertire o lanciare il valore nel
‫tipo giusto, che sarà il nostro tipo studente.
‫Quindi ora lo stiamo lanciando.
‫Lo stiamo memorizzando temporaneamente e ora possiamo andare avanti e scrivere i singoli valori sulla nostra console, ad esempio,
‫o utilizzarli nel nostro programma come vogliamo.
‫Quindi qui possiamo usare l'ID studente utilizzando l'ID temporaneo perché temp ora è di tipo studente e lo
‫studente ha ID, nome GPA e possiamo accedere a tutti quelli per ora scorrere l'intero elenco di tutti i nostri studenti.
‫Quindi facciamolo molto velocemente.
‫Eseguiamo il nostro codice e vediamo cosa fa per noi questo per ogni gruppo.
‫Quindi puoi vedere che lo attraversa.
‫Dice studente per Steve.
‫Studente tre Sclera.
‫Lo studente due è Jason e uno è Maria.
‫Quindi, mentre va da dietro al pozzo, inizia dall'ultimo ingresso e sale fino al primo ingresso.
‫Ora, se a questo punto non sappiamo se è uno studente, anche se lo stiamo già convertendo
‫in uno studente, questo è solo per mostrarti che una tabella hash è in realtà solo una raccolta di voci
‫del dizionario.
‫Quindi diamo un'occhiata a come possiamo semplificare questo per ogni gruppo.
‫Possiamo semplificare dicendo in realtà per ogni parola un tipo di variabile sarà uno studente.
‫Il nome dell'oggetto.
‫Beh, potresti chiamarlo studente.
‫Lo chiamerò solo valore come.
‫Quindi va bene.
‫E la raccolta che voglio esaminare verrà presa mentre le tabelle degli studenti puntano i valori.
‫Quindi c'è questa I raccolta di valori della tabella hash, quindi ottiene una raccolta di occhi contenente i valori nella
‫tabella hash.
‫Quindi questo ci permette di passare direttamente attraverso i valori senza doverlo fare.
‫Fondamentalmente, fai quello che abbiamo fatto qui, dove l'abbiamo convertito o dove lo abbiamo lanciato in un oggetto per studenti.
‫Quindi ora possiamo semplicemente andare avanti e.
‫Fai la stessa cosa che abbiamo fatto qui, ma ora, ovviamente, sarà importante che io. D. e così via, perché non è
‫entrata e non è 10, ma sarà, in effetti, un valore, OK, perché è quello che
‫questo per ogni nuovo.
‫Ci sta dando per ogni iterazione di esso, dove passa attraverso tutti i valori che abbiamo
‫e i valori saranno il valore individuale che stiamo attualmente guardando per quella particolare iterazione.
‫Quindi nella prima iterazione, sarà.
‫Steve, allora sarà approfondito quindi Jason e Maria.
‫OK, quindi se eliminiamo questa riga qui o questa per ogni ciclo e la eseguiamo di nuovo, vedremo che otterremo
‫gli stessi risultati.
‫Quindi, Steve, Chloro Jason e Maria.
‫OK, quindi questa è stata una rapida introduzione alle tabelle hash e nel prossimo video, avrò una piccola
‫sfida per te in cui fondamentalmente estenderai un po' il tuo codice per capire un po' meglio le tabelle hash.
‫E poi esamineremo i dizionari.