ArrayList
の私の理解ごとに、デフォルトの容量は10であり、それは10を超えて大きくなると、それはなぜ新しい要素を追加するたびにArrayListのhashCode()が変わるのですか?
を新しい能力を持つ新しいオブジェクトを作成し、その..になりますので、好奇心から、私がチェックするには、次のプログラムを入力として第11回要素を加えながら、それは新しいオブジェクトを作成し、能力を高めますので
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());
}
}
}
上記のシナリオによると、私はArrayList
デフォルトの初期容量を設定しておりませんときは10 次のようになります。ArrayList
オブジェクトのhashcode()
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
Hashcode for 7 element -952851195
Hashcode for 8 element 607076959
Hashcode for 9 element 1720209478
Hashcode for 10 element -6600307
Hashcode for 11 element -1998096089
Hashcode for 12 element 690044110
Hashcode for 13 element -1876955640
Hashcode for 14 element 150430735
は、デフォルトの容量の概念によると、10要素まで、それは同じhashcode()
を印刷しているはずですが、それはありますそうではありません。
hashCode()は、要素が同じで容量が同じ2つのリストが異なるハッシュコードを返すようにするequals()に結びついています。 – Thomas
可能な複製[JavaでequalsとhashCodeをオーバーライドするときに考慮すべき点は何ですか?](http://stackoverflow.com/questions/27581/what-issues-should-be-considered-when-overrid-equals-and-hashcode-in- java) – Raedwald