Patrón: objetos iguales si son iguales algunos campos

A menudo la equivalencia no tiene más ciencia que decir que dos objetos son equivalentes si lo son algunos de sus campos.

Ejemplo, sean objetos que son coches

public class Coche {

    private String marca;

    private String modelo;

    private int puertas;

    private int km;

    private Color color;

Si hemos definido como iguales dos coches con igual marca, modelo y número de puertas:

@Override

public int hashCode() {

    int hc = 17;

    hc = 31 * hc + marca.hashCode();

    hc = 31 * hc + modelo.hashCode();

    hc = 31 * hc + puertas;

    return hc;

}

Si queremos tener en cuenta que alguno de los campos que son objeto pueda ser nulo:

@Override

public int hashCode() {

    int hc = 17;

    if (marca != null)

        hc = 31 * hc + marca.hashCode();

    if (modelo != null)

        hc = 31 * hc + modelo.hashCode();

    hc = 31 * hc + puertas;

    return hc;

}

Temas relacionados

86. hashCode (método) public int hashCode()