Hash table di un HashSet

di il
13 risposte

Hash table di un HashSet

Ciao a tutti, ho un dubbio, la posizione di un elemento di un HashSet nella tabella hash come viene calcolato?

int h=x.hashCode() // dove x è un elemento di un HashSet
if(h<0) h=-h;
int posizione= h%dim oppure dim%h ? //dove dim è la dimensione dell'HashSet

il dubbio è questo

13 Risposte

  • Re: Hash table di un HashSet

    Come fai ad avere un dubbio del genere se ti diletti di programmazione?

    Ragiona!

    Se dovessi implementare tu una struttura dati del genere, come faresti?

    Non pensare ad efficienza, performance, o ottimizzazioni varie, ma ad una implementazione piu' diretta possibile.
  • Re: Hash table di un HashSet

    Io non mi diletto nella programmazione, ma sto studiando programmazione.
    comunque io non devo implementare niente sto solo cercando di capire come un HashSet memorizza un elemento.

    se poi dovessi scegliere tra una delle due, propenderei più per h%dim, ma ripeto non sono sicuro.
  • Re: Hash table di un HashSet

    Perche' non sei sicuro?
    Quale e' il dubbio?
  • Re: Hash table di un HashSet

    Ma i post li leggi o scrivi tanto per incrementare il contatore dei messaggi?
  • Re: Hash table di un HashSet

    xneo ha scritto:


    ma i post li leggi o scrivi tanto per incrementare il contatore dei messaggi?
    Invece di essere polemico, perche' non descrivi il dubbio che hai?
    Visto che la risposta e' estremamente semplice, se non la vedi forse e' perche' non hai compreso qualcosa di fondamentale.
  • Re: Hash table di un HashSet

    Ma l'ho scritto nei primi due post il problema.
    non è questione di essere polemico ma mi sembra di giocare a nascondino.

    è chiaro che in un HashSet gli elementi non sono in ordine e la loro posizione dipende dall'hashCode degli oggetti, ma questo non mi aiuta per niente, quello che voglio sapere è semplicemente:
    Parlo di HashSet e non di LinkedHashSet o di TreeSet

    dim%h ==> OPZIONE 1
    h%dim ==> OPZIONE 2

    nel caso non aveste letto il primo post
    h=x.hashCode() // x è un elemento di un HashSet
    if(h<0) h=-h; // se h è negativo lo si fa diventare positivo
    .... OPZIONE 1 o OPZIONE 2????

    se siete in grado di aiutarmi accetto volentieri la vostra disponibilità
    altrimenti se dovete trollare non giudicatemi come polemico
  • Re: Hash table di un HashSet

    Quindi, tu stai affermando che non sei in grado di capire la differenza tra

    10 % 100001

    e

    100001 % 10

    La domanda sorge spontanea: ma sai quale operazione rappresenta l'operatore '%'?
  • Re: Hash table di un HashSet

    Ok ok, io parlo di patate e tu mi rispondi con cipolle,
    per favore se devi trollare fallo da un'altra parte.

    comunque ci tengo a ribadire che la mia è una domanda tecnica.
    poi se per avere una risposta devo tenere un corso di java....
  • Re: Hash table di un HashSet

    xneo ha scritto:


    ok ok, io parlo di patate e tu mi rispondi con cipolle,
    per favore se devi trollare fallo da un'altra parte.

    comunque ci tengo a ribadire che la mia è una domanda tecnica.
    poi se per avere una risposta devo tenere un corso di java....
    Se fosse una domanda tecnica!

    Magari il corso non lo devi tenere, ma seguire.

  • Re: Hash table di un HashSet

    E magari il professore sei te...
    comunque (come si evince dal tuo nick) c'è sempre speranza.....
  • Re: Hash table di un HashSet

    xneo ha scritto:


    e magari il professore sei te...
    comunque (come si evince dal tuo nick) c'è sempre speranza.....
    'me'? No, grazie.
    (povero italiano )
  • Re: Hash table di un HashSet

    Mi ha dimostrato per l'ennesima volta che i post non li leggi (vedi post numero 3)
    era il caso,per questa domanda "banale", di incrementare così tanto il contatore dei messaggi?

    se avessi letto quel post,bastava una sola risposta: è così!, magari se volevi(ma non era necessario),visto che sei tanto intelligente potevi spiegare anche il perchè.
  • Re: Hash table di un HashSet

    Io credo solo che migliorabile stia cercando di farti capire che non stai cercando di scegliere fra "opzione 1" e "opzione 2", ma fra "opzione insensata" e "opzione sensata" (non necessariamente in quest'ordine).

    Se ho una tabella di 10 elementi, potrò inserire elementi dalla posizione 0 alla posizione 9.

    Ora l'operazione aritmetica A % B restituisce sempre un valore compreso fra 0 e (B-1).

    Detto questo, quale delle due opzioni è senza senso e quale l'unica con un senso?

    Se l'oggetto che voglio inserire mi restituisce come hasCode il valore 10983, ha senso fare

    10 % 10983

    o fare

    10983 % 10

    per trovare la posizione all'interno di una tabella di 10 elementi?

    Non è questione né di Java, né di corsi su Java... è solo questione di ovvietà.


    Ciao.
Devi accedere o registrarti per scrivere nel forum
13 risposte