相关疑难解决方法(0)

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

根据我的理解ArrayList,默认容量为10,当它超过10时,它将创建一个具有新容量的新对象,依此类推.

因此,出于好奇,我输入下面的程序来检查hashcode()ArrayList对象:

public class TestCoreJava {

    public static void main(String [] args){

        ArrayList al = new ArrayList();

        for(int i=0;i<15;i++){

            al.add("Temp"+i);
            System.out.println("Hashcode for "+i+" element "+al.hashCode());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

根据上面的场景,当我没有设置ArrayList默认的初始容量时将是10.因此,在添加第11个元素时,它将创建一个新对象并增加容量ArrayList.

当我打印ArrayList对象的哈希码时,它hashcode()每次都会给出一个新的哈希码.

以下是o/p:

Hashcode for 0 element 80692955
Hashcode for 1 element -1712792766
Hashcode for 2 element -1476275268
Hashcode for 3 element 1560799875
Hashcode for 4 element 1220848797
Hashcode for 5 element -727700028
Hashcode for 6 element -1003171458 …
Run Code Online (Sandbox Code Playgroud)

java collections arraylist hashcode

19
推荐指数
2
解决办法
1万
查看次数

标签 统计

arraylist ×1

collections ×1

hashcode ×1

java ×1