List インターフェイスのすべての (真の) 実装で同じように機能します (要素の追加をサポートしている場合)。メソッドの動作は、次のよう.hashCodeに定義されList.hashCode()ています。
このリストのハッシュ コード値を返します。リストのハッシュ コードは、次の計算の結果として定義されます。
int hashCode = 1;
Iterator<E> i = list.iterator();
while (i.hasNext()) {
E obj = i.next();
hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
}
これにより、 の一般契約で要求されるように、任意の 2 つのリスト
およびに対して が をlist1.equals(list2)意味することが保証されます。list1.hashCode()==list2.hashCode()list1list2Object.hashCode()
グローコーダーが示したAbstractListように、この実装だけが含まれているため、Listインターフェイスのすべての実装者がこれを再度実行する必要はありません。
たとえば、次のように記述して同じ 2530 を取得することもできます(の実装をArrays.asList("1", "2").hashCode()変更しない限り)。hashCode()String