试图理解ArrayList的hashCode()实现

时间:2016-01-09 07:34:01

标签: java arraylist hashcode

通过java源代码,我在类AbstractList的hashCode()方法中遇到了难以理解的构造。这是ArrayList的hashCode方法的实现。我不明白它是如何与for-each迭代的。

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

E 是元素的类型。但是哪个类(类型)指针这个属于哪个?

3 个答案:

答案 0 :(得分:1)

var r = /^[0-9]{4}(?:[0-9]{2})?$/ 引用pidin -p<process> mapinfo 中的泛型类型(请参阅E e?)

将其视为

ArrayList<E>

仅因为您在列表中 E成为ArrayList<String> list for(String e : list) {

答案 1 :(得分:1)

list

this - 它会引用List<Person> personList = new ArrayList<Person>();
this - 它将引用personList

的对象

答案 2 :(得分:1)

  

但是它属于哪个类(类型)指针?

this是调用hashCode的列表。所以编译时类型是AbstractList<E>

它说“对于此列表中的每个元素,在结果中包含该元素的哈希码”。