Java: Tabelle Hash

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

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.

funzioni di hash

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.

<p>fattore di carico</p> Signup and view all the answers

Il metodo ______ viene utilizzato per aggiungere una chiave e un valore a una Hash Table.

<p>put</p> Signup and view all the answers

Per recuperare il valore associato a una specifica chiave in una Hash Table, si utilizza il metodo ______.

<p>get</p> Signup and view all the answers

Il metodo ______ serve per eliminare una chiave e il corrispondente valore da una tabella hash.

<p>remove</p> Signup and view all the answers

Per verificare se una chiave è presente in una Hash Table, si utilizza il metodo ______.

<p>contains</p> Signup and view all the answers

Il metodo ______ restituisce il numero di elementi contenuti in una tabella hash.

<p>size</p> Signup and view all the answers

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.

<p>iterator</p> Signup and view all the answers

Flashcards

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?

Trasforma la chiave in un indice per accedere alla posizione in memoria.

Cosa fa il metodo put(chiave, valore)?

Aggiunge una chiave e il suo valore associato alla tabella.

Cosa fa il metodo get(chiave)?

Recupera il valore associato a una specifica chiave.

Signup and view all the flashcards

Cos'è il fattore di carico?

È un valore tra zero e uno che influenza l'utilizzo dello spazio e i tempi di recupero.

Signup and view all the flashcards

Vantaggio di usare Hash Table?

Riferirsi agli elementi direttamente tramite una chiave invece di un indice numerico.

Signup and view all the flashcards

Cosa fa il metodo remove(chiave)?

Rimuove la chiave e il valore corrispondente dalla tabella.

Signup and view all the flashcards

Cosa fa il metodo contains(chiave)?

Verifica se una chiave è presente nella tabella.

Signup and view all the flashcards

Cosa fa il metodo size()?

Restituisce il numero di elementi nella tabella.

Signup and view all the flashcards

Cosa fa iterator e keySet()?

Permette di accedere a tutti gli elementi della tabella hash in ordine sequenziale.

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 package java.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 da keySet.
  • 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 e BufferedReader 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 chiamata rubrica 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.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser