Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> Java Programming >> .

Perché un String Immutabile calcolarne il valore Hash

? Java applicazioni modello componenti di codice come oggetti , con ogni oggetto avente un'area di responsabilità . Gli oggetti forniscono metodi per svolgere le loro responsabilità . Alcuni metodi in Java sono implementati da tutti gli oggetti possibili , comprese le stringhe . Il framework Java consente agli sviluppatori di utilizzare alcuni tipi di struttura di archiviazione di dati , alcuni dei quali utilizzano i valori di hash - code per memorizzare gli oggetti . Un valore hash - codice utilizza un codice per fare riferimento a un oggetto specifico , consentendo alla classe raccolta per implementare metodi efficienti per immagazzinare più oggetti all'interno del programma . Codice Java in grado di calcolare i valori hash - code per tutti gli oggetti , tra cui stringhe , che sono immutabili . Stringa di contenuto

variabili stringa in programmi Java sono oggetti della classe String , la memorizzazione di sequenze di caratteri di testo . Ciò può essere fonte di confusione , perché i programmi creano le variabili stringa utilizzando lo stesso tipo di struttura utilizzata per le variabili di tipo primitivo , come numeri . Il seguente codice di esempio illustra la creazione di una variabile stringa : String name = " Giovanni " ;

Il programma può eseguire i metodi della classe String su questa variabile , alcuni dei quali coinvolgono alterare il contenuto del testo . Metodi che alterano il contenuto di una stringa normalmente restituiscono una nuova stringa , invece che modificare la stringa esistente . Questo perché le stringhe sono immutabili , il che significa che una volta che una variabile stringa viene creata , il suo contenuto non può essere modificato . I programmi in cui il contenuto di una stringa sembra essere alterato in realtà sono la creazione di nuove stringhe per sostituire quelli esistenti .
HashCode Funzione

Tutti gli oggetti in Java forniscono " funzione hashCode " . Questo perché tutte le classi Java ereditano dalla superclasse Object , che fornisce il metodo " hashCode " . Il seguente codice di esempio mostra la chiamata al metodo sulla variabile String : name.hashCode ( ) ;

chiamata a questo metodo provoca Java per generare un valore hash - codice per la variabile stringa specificata . Creazione di un valore hash -code un oggetto stringa coinvolge lo stesso processo come si usa per qualsiasi oggetto .

Risultati

Il metodo " hashCode " si traduce in un valore intero che rappresenta l'oggetto in questione . Questo numero consente di classi Java per ottimizzare il rendimento durante la memorizzazione di valori di dati , in particolare in collegamento con la classe HashMap o altre classi di altre raccolte . Nella maggior parte dei casi , un programmatore Java non ha bisogno di preoccuparsi dei dettagli dei numeri utilizzati come hash -codici per oggetti come corde , come le classi collezioni gestire questo dettaglio .
Equality

il risultato della chiamata al " hashCode " su due elementi che sono uguali dovrebbe essere lo stesso numero . Ad esempio , le due variabili stringa seguenti dovrebbero generare lo stesso valore di hash - code: String nomeacaso = " Giovanni " ; String otherName = " Giovanni " ;

Se due oggetti restituiscono un risultato vero se nell'impiego metodo equals , quindi Java li considera uguali , nel qual caso essi dovrebbero comportare lo stesso hash -code. Ad esempio , il codice seguente si tradurrebbe in un vero e proprio valore : booleano AreEqual = someName.equals ( otherName ) ;

È tipicamente il caso che se due stringhe non sono uguali , essi generano differenti valori di hash - code , ma questo non è garantito . (Vedi riferimenti 1, 2 , 3 ) per

 

Programmazione © www.354353.com