Generazione di un hashcode Java Corretto

Sommario

Java HashCode è uno dei metodi che la maggior parte della testa di spazzole Genera programmatori.

public boolean hashCode();

Il metodo viene utilizzato in combinazione con il metodo uguale per confrontare a livello aziendale quando sono identici due oggetti di una classe. L’implementazione equivale è sempre molto più facile da capire.

java hashcode

Questo metodo esiste per migliorare le prestazioni Java quando si confrontano due oggetti. Dal momento che due oggetti hanno diversi hashcodes non possono più essere gli stessi e si tratta di fare un semplice confronto tra numeri interi. I problemi sorgono su come generare gli hashcodes, poiché il quadro di raccolta lo utilizza per progettare le strutture interne dei loro tipi di dati astratti. Nell’esempio seguente, viene visualizzata la classe della persona con il metodo override uguale (override) in modo che due oggetti siano uguali se il loro nome e cognome coincidono. Il metodo è più o meno comprensibile.

package com.arquitecturajava;public class Persona {private String nombre;private String apellidos;public String getNombre() {return nombre;}public void setNombre(String nombre) {this.nombre = nombre;}public String getApellidos() {return apellidos;}public void setApellidos(String apellidos) {this.apellidos = apellidos;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Persona other = (Persona) obj;if (apellidos == null) {if (other.apellidos != null)return false;} else if (!apellidos.equals(other.apellidos))return false;if (nombre == null) {if (other.nombre != null)return false;} else if (!nombre.equals(other.nombre))return false;return true;}}

Eclipse Java HashCode

Il metodo sopra è stato generato con i refactoring Eclipse. Allo stesso modo, è possibile generare l’hashcode.

public int hashCode() {final int prime = 31;int result = 1;result = prime * result+ ((apellidos == null) ? 0 : apellidos.hashCode());result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());return result;}

Questo metodo non è più così semplice da capire. Questo perché gli hashcode devono avere una certa variabilità. Cioè, se tutti gli oggetti generano lo stesso hashcode (), questo non vale la pena migliorare le prestazioni nei confronti poiché tutti generano lo stesso e il metodo uguale sarà sempre usato quando si esegueranno.

JavahashCode

Dall’altro lato se tutti gli oggetti generano diversi hashcode, sarà impossibile raggrupparli all’interno dei diversi tipi di raccolte in modo ottimale.

javahashcodecorecto

java hashcode corretto

quindi, di solito eclipse è responsabile della progettazione del proprio metodo HashCode attraverso il proprio metodo HashCode Uso dei numeri primi. Tuttavia, c’è un’altra opzione molto più elegante e semplice per generare loro. Java API ha una classe di oggetti nel pacchetto di utilità che genera hashcodes.

@Override public int hashCode() { // TODO Auto-generated method stub return Objects.hash(nombre,apellidos); }

In questo modo dimenticheremo il problema che questo metodo genera in programmatori.

Altri articoli correlati: Comprensione di uguale e hashcode, java == vs uguale a

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *