我有以下兩個類,並且想要使用Foo1
作爲HashMap
中的鍵。兩個Foo1
對象如果它們的Foo2
對象相等,則對象相等,如果它們的字節數組滿足Arrays.equals()
,則對象相等。在HashMap中使用的對象數組的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);
}
}
如何你的Foo1邏輯與Foo2不同?在這兩種情況下,您都希望每個對象的數組字段在組件方面相等。爲什麼不在這兩種情況下使用Arrays.equals/Arrays.hashCode? (順便說一句,沒有一些投射,Foo2將無法編譯) –