hashCode () для массива объектов для использования в HashMap
У меня есть следующие два класса, и я хочу использоватьFoo1
в качестве ключей вHashMap
, ДваFoo1
объекты равны, если ихFoo2
объекты равны, иFoo2
объекты равны, если их байтовые массивы удовлетворяютArrays.equals()
.
Я не совсем уверен, что делать дляhashCode()
метод дляFoo1
, Нужно ли просто суммировать хеш-коды от каждого изFoo2
объекты или это неэффективно?
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);
}
}