我在java中有一个类,它包含两个整数和一个整数数组作为成员,我想用上面的对象作为键来创建一个哈希映射.我应该如何覆盖equals运算符和hashCode(),使得具有与成员相同的Integer值的对象和数组中的相同条目获得相同的哈希代码?(或者甚至可以这样做)感谢提前.
解决方法:
要计算int数组的哈希码,可以使用java.util.Arrays.hashcode(int []).
如果你看一下它的实现:
public static int hashCode(int a[]) {
if (a == null)
return 0;
int result = 1;
for (int element : a)
result = 31 * result + element;
return result;
}
你可以想出如何计算你的类的哈希码,它应该基于你的两个整数和整数数组的值:
public class MyClass {
private int a, b;
private int[] array;
public int hashCode() {
return (31 * (31 * Arrays.hashCode(array) + a)) + b;
}
等于实现可以看起来像:
public int equals(Object o) {
if (o instanceof of MyClass) {
MyClass m = (MyClass)o;
return m.a == a && m.b == b && Arrays.equals(m.array, array);
}
else
return false;
}
标签:java,class,hashmap,override
来源: https://codeday.me/bug/20190829/1762710.html