Podcast
Questions and Answers
Una ______ è una struttura di dati dinamica che mette in relazione una chiave con un valore associato.
Una ______ è una struttura di dati dinamica che mette in relazione una chiave con un valore associato.
HashTable
Il termine Hash Table deriva dall'utilizzo di ______ da parte della struttura di dati.
Il termine Hash Table deriva dall'utilizzo di ______ da parte della struttura di dati.
funzioni di hash
In Java, la struttura dati che implementa la tabella hash è descritta dalla classe ______, inclusa nel package java.util.
In Java, la struttura dati che implementa la tabella hash è descritta dalla classe ______, inclusa nel package java.util.
Hashtable
Il ______ è un valore tra zero e uno che influenza l'utilizzo dello spazio e i tempi di recupero dei valori in una tabella hash.
Il ______ è un valore tra zero e uno che influenza l'utilizzo dello spazio e i tempi di recupero dei valori in una tabella hash.
Il metodo ______ viene utilizzato per aggiungere una chiave e un valore a una Hash Table.
Il metodo ______ viene utilizzato per aggiungere una chiave e un valore a una Hash Table.
Per recuperare il valore associato a una specifica chiave in una Hash Table, si utilizza il metodo ______.
Per recuperare il valore associato a una specifica chiave in una Hash Table, si utilizza il metodo ______.
Il metodo ______ serve per eliminare una chiave e il corrispondente valore da una tabella hash.
Il metodo ______ serve per eliminare una chiave e il corrispondente valore da una tabella hash.
Per verificare se una chiave è presente in una Hash Table, si utilizza il metodo ______.
Per verificare se una chiave è presente in una Hash Table, si utilizza il metodo ______.
Il metodo ______ restituisce il numero di elementi contenuti in una tabella hash.
Il metodo ______ restituisce il numero di elementi contenuti in una tabella hash.
Per accedere a tutti gli elementi della tabella hash in ordine sequenziale, si utilizza il metodo ______, applicato all'insieme delle chiavi restituite con il metodo keySet.
Per accedere a tutti gli elementi della tabella hash in ordine sequenziale, si utilizza il metodo ______, applicato all'insieme delle chiavi restituite con il metodo keySet.
Flashcards
Cos'è una Hash Table?
Cos'è una Hash Table?
Una struttura di dati dinamica che associa una chiave a un valore. Le chiavi sono spesso stringhe.
Cosa fa la funzione di hash?
Cosa fa la funzione di hash?
Trasforma la chiave in un indice per accedere alla posizione in memoria.
Cosa fa il metodo put(chiave, valore)
?
Cosa fa il metodo put(chiave, valore)
?
Aggiunge una chiave e il suo valore associato alla tabella.
Cosa fa il metodo get(chiave)
?
Cosa fa il metodo get(chiave)
?
Signup and view all the flashcards
Cos'è il fattore di carico?
Cos'è il fattore di carico?
Signup and view all the flashcards
Vantaggio di usare Hash Table?
Vantaggio di usare Hash Table?
Signup and view all the flashcards
Cosa fa il metodo remove(chiave)
?
Cosa fa il metodo remove(chiave)
?
Signup and view all the flashcards
Cosa fa il metodo contains(chiave)
?
Cosa fa il metodo contains(chiave)
?
Signup and view all the flashcards
Cosa fa il metodo size()
?
Cosa fa il metodo size()
?
Signup and view all the flashcards
Cosa fa iterator
e keySet()
?
Cosa fa iterator
e keySet()
?
Signup and view all the flashcards
Signup and view all the flashcards
Study Notes
- L'Hash Table (o tabella hash) è una struttura di dati dinamica che associa una chiave a un valore.
- Le chiavi sono generalmente di tipo
String
, mentre i valori possono essere oggetti di qualsiasi tipo.
Esempio di utilizzo
- Un elenco di studenti, dove la chiave è la matricola e il valore è l'oggetto contenente le informazioni dello studente.
Funzionamento
- La struttura dati usa funzioni di hash.
- La chiave viene trasformata in un indice tramite la funzione di hash.
- Questo indice è usato per accedere alla tabella dove sono memorizzati i valori.
Implementazione in Java
- La classe
Hashtable
, inclusa nel packagejava.util
, implementa la tabella hash.
Costruttori
Hashtable ht = new Hashtable();
: crea una tabella vuota con capacità predefinita (11) e un fattore di carico di 0.75.Hashtable ht = new Hashtable(5);
: crea una tabella con una capacità iniziale di 5 elementi e un fattore di carico standard (0.75).Hashtable ht = new Hashtable(10, 0.9);
: crea una tabella con una capacità iniziale di 10 elementi e un fattore di carico di 0.9.
Fattore di carico
- È un valore compreso tra zero e uno.
- Un valore vicino a uno riduce lo spazio inutilizzato.
- Può aumentare i tempi di recupero dei valori.
Metodi principali
put(chiave, valore)
: aggiunge una coppia chiave-valore alla tabella.get(chiave)
: recupera il valore associato a una specifica chiave.remove(chiave)
: cancella la chiave e il valore corrispondente dalla tabella.contains(chiave)
: verifica se una chiave è presente nella tabella.size()
: restituisce il numero di elementi nella tabella.
Iterazione
- Per accedere agli elementi in ordine sequenziale, si può usare il metodo
iterator
applicato all'insieme delle chiavi restituite dakeySet
. - Esempio:
Iterator i = ht.keySet().iterator();
Vantaggi rispetto a Vector/ArrayList
- Possibilità di riferirsi direttamente agli elementi tramite una chiave.
- Non è necessario un indice numerico.
Esempio di applicazione: Rubrica telefonica
- Si vuole gestire una rubrica telefonica contenente nome e numero di telefono.
- Si implementa con una
HashTable
. - La chiave è il nome (tipo
String
). - il valore è il numero di telefono (tipo
String
).
Operazioni gestite
- Aggiunta e eliminazione di nominativi.
- Visualizzazione della rubrica.
- Ricerca di un nominativo.
Implementazione della classe Menu (Menu.java)
- Importa il package
java.io.*
. - Usa
InputStreamReader
eBufferedReader
per la gestione dell'input da tastiera. - Il metodo
mostraMenu()
stampa le opzioni del menu. - Il metodo
scelta()
legge l'input dell'utente e restituisce la scelta effettuata.
Programma Java (ProgRub.java)
- Importa il package
java.util.*
. - Crea una
Hashtable
chiamatarubrica
con capacità iniziale di 20. - Utilizza un ciclo
while
per gestire le scelte dell'utente fino a quando non sceglie di uscire (scelta 5). - Se la scelta è 1, permette all'utente di aggiungere un nuovo nominativo chiedendo nome e valore.
- Se la scelta è 2, permette all'utente di eliminare un nominativo chiedendo il nome.
- Se la scelta è 3, visualizza l'intera rubrica.
- Se la scelta è 4, cerca un nominativo e ne visualizza il numero di telefono.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.