hashCode () dla tablicy obiektów do użycia w HashMap
Mam następujące dwie klasy i chcę z nich korzystaćFoo1
jako klucze wHashMap
. DwaFoo1
obiekty są równe, jeśli ichFoo2
obiekty są równe iFoo2
obiekty są równe, jeśli ich tablice bajtów spełniająArrays.equals()
.
Nie jestem do końca pewien, co zrobić dlahashCode()
metoda dlaFoo1
. Czy muszę tylko podsumować hashcodes z każdego z nichFoo2
czy jest to nieefektywne?
public class Foo1 {
Foo2[] foo2_array;
@Override
public boolean equals(Object Other) {
for (int i = 0; i < foo2_array.length; i++) {
if (!foo2_array[i].equals(other.foo2_array[i])
return false;
}
return true;
}
@Override
public int hashCode() {
// what to here?
}
}
public class Foo2 {
byte[] values;
@Override
public boolean equals(Object other) {
return Arrays.equals(values, other.values);
}
@Override
public int hashCode() {
return Arrays.hashCode(values);
}
}