name: portada class: portada-slide, center, middle # HashCode & equals .footnote[Joan Puigcerver Ibáñez] --- layout: true class: regular-slide .right[.logo[]] --- # Equals - Les classes tenen un mètode equals - Indica quan dos valors són iguals ``` public boolean equals(Object anotherObject) ``` --- # Equals ``` Employee employee = new Employee("12345678Z", "Lin", "Pi", "C. Pi 42"); Employee employee2 = new Employee("12345678Z", "Lin", "Pi", "C. Pi 42"); boolean sameEmployee = employee.equals(employee2); boolean containsEmployee = Arrays.asList(employee).contains(employee2); ``` --- # Equals - Podem definir quan dos objectes són iguals. - Dos persones són la mateixa si tenen el mateix dni? ``` @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || !(o instanceof Employee)) return false; Employee employee = (Employee) o; return dni != null ? dni.equals(employee.dni) : employee.dni == null; } ``` --- # HashCode - L'utilitzen estructures per indexar els objectes - HashMap, HashSet ``` public int hashCode() ``` --- # HashCode - Equals - Dos objectes iguals, sempre han de tenir el mateix hashcode. --- # Implementació - L'implementació del equals i hashcode és - Repetitiva - Facil de produir error - La majora de IDEs tenen una opció per generar-los.