Java 试图理解ArrayList的hashCode()实现
通过查看java源代码,我在AbstractList类的hashCode()方法中遇到了无法理解的for me构造。这是ArrayList的hashCode方法的实现。我不明白它是如何迭代的Java 试图理解ArrayList的hashCode()实现,java,arraylist,hashcode,Java,Arraylist,Hashcode,通过查看java源代码,我在AbstractList类的hashCode()方法中遇到了无法理解的for me构造。这是ArrayList的hashCode方法的实现。我不明白它是如何迭代的 public int hashCode() { int hashCode = 1; for (E e : this) //<--??? hashCode = 31*hashCode + (e==null ? 0 : e.hashCode()); return
public int hashCode() {
int hashCode = 1;
for (E e : this) //<--???
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
return hashCode;
}
public int hashCode(){
int hashCode=1;
对于(E E:this)/,E
指的是ArrayList
中的泛型类型(参见E
)
把它想象成
ArrayList<String> list
for(String e : list) {
ArrayList列表
for(字符串e:列表){
仅因为您在列表中您的列表
变为此
E
指的是数组列表中的泛型类型(请参见E
?)
把它想象成
ArrayList<String> list
for(String e : list) {
ArrayList列表
for(字符串e:列表){
只因为你在列表中,你的列表变成了这个list personList=new ArrayList();
此
-它将引用个人列表
e
-它将引用Person
类的对象List personList=new ArrayList();
此
-它将引用个人列表
e
-它将引用Person
类的对象
但是这个指针属于哪个类(类型)
this
是调用了hashCode
的列表。因此编译时类型是AbstractList
它的意思是“对于列表中的每个元素,在结果中包含该元素的哈希代码”
但是这个指针属于哪个类(类型)
this
是调用了hashCode
的列表。因此编译时类型是AbstractList
它的意思是“对于列表中的每个元素,在结果中包含该元素的哈希代码”。这太简单了。我真丢脸。这太简单了。我真丢脸。