14w*_*wml -1 java hash hashcode
我有一个自定义对象,其属性包括可以是整数(例如Integer num1和Integer num2)null。
对于 equal 函数,我通过执行 来确定 2 个自定义对象是否相等return num1 == customObj.num1 && num2 == customObj.num2。这工作 b/cnull == null是true在 Java 中。
所以我想知道在我的对象的哈希码函数中是否可以这样做return Objects.hash(num1, num2)?
我只是不确定我是否可以将null对象传递给它Objects.hash(...),是否会以某种方式弄乱哈希码,或者我是否会得到NullPointerException.
如果这些引用中的一个为空,您必须对文档进行一些挖掘,以找出行为将是什么。
哈希码的生成就像将所有输入值放入一个数组中一样,并且该数组通过调用
Arrays.hashCode(Object[]).
此方法返回的值等于将返回的值
Arrays.asList(a).hashCode()
Arrays.asList(Object[])返回 a List,并List.hashCode()说:
列表的哈希码定义为以下计算的结果:
Run Code Online (Sandbox Code Playgroud)int hashCode = 1; for (E e : list) hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
因此,空元素的处理方式与哈希码为零的对象相同。
虽然需要一些挖掘才能得到这个答案,但一个更简单的策略是尝试它 - 你可以像那样更快地得到你的答案。
| 归档时间: |
|
| 查看次数: |
2631 次 |
| 最近记录: |