Qual è l'hashcode di un tipo primitivo, ad esempio int?Hashcode di un numero
per esempio, diciamo che num era un interger.
int hasCode = 0;
if (num != 0) {
hasCode = hasCode + num.hashCode();
}
Qual è l'hashcode di un tipo primitivo, ad esempio int?Hashcode di un numero
per esempio, diciamo che num era un interger.
int hasCode = 0;
if (num != 0) {
hasCode = hasCode + num.hashCode();
}
Per la hashCode
di un int
la scelta più naturale è quella di utilizzare il int
stesso. Una domanda migliore è che cosa utilizzare per lo di un long
poiché non si adatta all'hashcode di dimensioni int
. La tua migliore fonte per quello — e tutte le domande relative allo hashCode
— sarebbe Effective Java.
Mi sono incuriosito dal codice hash "long" e l'ho cercato, è: '(int) (valore^(valore >>> 32));' –
@platzhirsch Sì, è così che è implementato in 'java.lang .Long', ed è quello che raccomanda Java efficace. –
@MarkoTopolnik in realtà penso che [questo] (http://download.java.net/openjdk/jdk7/) sia probabilmente molto più utile. – oldrinb
No hashCode()
metodo per primitivo tipo int
disponibili.
Integer
è Wrapper tipo di classe e hashcode()
restituisce un int
tratti dal codice sorgente Integer.class
:
/**
* Returns a hash code for this {@code Integer}.
*
* @return a hash code value for this object, equal to the
* primitive {@code int} value represented by this
* {@code Integer} object.
*/
public int hashCode() {
return value;
}
Dove value
è il valore del numero intero.
Nota: È corretto ma la domanda era intesa per int primitivo e non oggetto intero che contiene il valore 'intero' – MANU
Il metodo java.lang.Integer.hashCode()
restituisce un valore di codice hash per il valore primitivo di int
ma rappresentato come un oggetto Integer
.
/**
* Returns a hash code value for an Integer,
* equal to the primitive int value it represents.
*/
public class IntegerDemo {
public static void main(String[] args){
Integer i = new Integer("20");
System.out.println("Value = " + i.hashCode());
}
}`
Risultati:
valore = 20
Link alla fonte: http://www.tutorialspoint.com/java/lang/integer_hashcode.htm
la variabile intermedia retval non è realmente necessaria in questo codice in quanto viene utilizzato solo una volta. –
Non è possibile chiamare metodi su primitive. Anche se può essere autoboxed, e poi come 'Integer' (o simile) otterrai' Integer.hashCode'. –
In tal caso, potremmo essere più utili e aggiungere ciò che sarebbe hashCodes per le classi wrapper. –
L'hashcode di un intero è il numero intero stesso. –