您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么每次添加新元素时ArrayList的hashCode()都会更改?

为什么每次添加新元素时ArrayList的hashCode()都会更改?

hashCodeArrayList一个功能hashCode都存储在该元件S1ArrayList,所以当容量的变化,它的变化当添加删除元素或改变其的hashCode办法元素发生变异一个它不会改变。

这是Java 8实现(实际上是在中实现的AbstractList):

public int hashCode() {
    int hashCode = 1;
    for (E e : this)
        hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
    return hashCode;
}

顺便说一句,这是出现在hashCode()List接口的Javadoc中的确切代码

返回此列表的哈希码值。列表的哈希码定义为以下计算的结果:

int hashCode = 1;
for (E e : list)
    hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
其他 2022/1/1 18:26:37 有650人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶