ArrayList hashcode变化
ArrayList加了元素后,hashCode会变吗?
会的
看如下代码:
public static void main(String[] args) {
List<String> list =new ArrayList<>();
System.out.println(list.hashCode());
list.add("hashcode变了吗");
System.out.println(list.hashCode());
list.add("hashcode变了");
System.out.println(list.hashCode());
}
结果:
1
341513837
-1178578404
果然变了。。。
原因在于ArrayList的父类AbstractList中hashCode
public int hashCode() {
int hashCode = 1;
for (E e : this)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
return hashCode;
}