|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Apr 2006
Messaggi: 15
|
[JAVA] problemone:java e tabelle hash
salve a tutti,
mi servirebbe il vostro aiuto per risolvere questa esercitazione sul linguaggio java: Realizzare una classe Table per la gestione di una tabella (di dimensiona prefissata) ordinata di coppie <Key,Value>, che esporta i seguenti metodi : Table():costruttore che costruisce una tabella di dimensione standard, Table(int size): costruttore che costruisce una lista di dimensione size, ....e altre funz varie Note realizzative: La tabella è realizzata mediante una tecnica di hashing ad indirizzamento aperto in un vettore di dimensiona prefissata, allocato staticamente. Ipotizzata la chiave Key di tipo intero, si adoperi la funzione di hash a scansione lineare: h(Key,i) = ((key%size)+i)%size dove i è il tentativo effettuato. Inizialmente si invoca la funzione h(key,0); se la posizione è libera si inserisce l’elemento, altrimenti, si cerca la nuova posizione con h(key,1); ancora una volta se è libera si inserisce l’elemento altrimenti si invoca h(key,2), e così via. Ovviamente la tabella è piena se si giunge al tentativo size-1; ora quello che vi chiedo: ke tipo di vettore statico dovrei usare...mica dovrei usare una matrice? vi ringrazio anticipatamente per le vostre risposte |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Credo che il testo si riferisca ad un array di dimensione nota pari a "size" (dove size è pari al valore passato in costruzione o alla dimensione standard in caso di costruzione senza argomenti).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2005
Messaggi: 291
|
Codice:
class Couple{
Integer key;
Object value;
}
public class MyHashTable{
private Couple[] table;
private int size;
private static final int DEF_SIZE=100;
public MyHashTable(int size){
this.size=size;
this.table=new Couple[this.size];
}
public MyHashTable(){
this(DEF_SIZE);
}
public boolean put(Integer key,Object value){
for (int i=0;i<this.table.length;i++){
int pos=calcolaHash(key,this.size,i);
if (this.table[pos]==null){
Couple coup=new Couple();
coup.key=key;
coup.value=value;
this.table[pos]=coup;
return true;
}
}
return false;
}
private static int calcolaHash(Integer key,int size,int i){
return ((key.intValue()%size)+i)%size;
}
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:06.


















