当前位置 : 主页 > 网络编程 > 其它编程 >

ArrayList的hashCode和equals

来源:互联网 收集:自由互联 发布时间:2023-07-02
2019独角兽企业重金招聘Python工程师标准ArrayList中是允许出现重复的数据的ArrayListAbstractListListRandomAcces 2019独角兽企业重金招聘Python工程师标准>>> ArrayList中是允许出现重复的数据的 Array
2019独角兽企业重金招聘Python工程师标准ArrayList中是允许出现重复的数据的ArrayListAbstractListListRandomAcces

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

ArrayList中是允许出现重复的数据的

ArrayList AbstractListListRandomAccessCloneablejava.io.Serializable

List是一个接口

AbstractList是一个抽线方法定义了hashCode方法和equals方法

hashCode:

   public int hashCode() {int hashCode  1;for (E e : this)hashCode  31*hashCode  (enull ? 0 : e.hashCode());return hashCode;}

equals:基本数据类型直接判断引用数据类型根据hashCode判断

public boolean equals(Object o) {if (o  this)return true;if (!(o instanceof List))return false;ListIterator e1  listIterator();ListIterator e2  ((List) o).listIterator();while (e1.hasNext()  e1.next();Object o2  e2.next();if (!(o1null ? o2null : o1.equals(o2)))return false;}return !(e1.hasNext() || e2.hasNext());}

Example :

List l1new ArrayLlist();l1.add(0);List l2new ArrayList();l2.add(0);System.out.println(l1.equals(l2);  //true

因为 由于Integer的hashCode计算方法是直接返回value所以0的hashCode就是0,再根据AbstractList的hashCoded的计算方法可以计算出

l1.hashCode31

l2.hashCode31

所以相等可以在AbstractList的hashCode方法中加个断点debug一下。或者

List l1new ArrayLlist(){

        override public int hashCode(){

                可以在这里观察

        }

}

转:https://my.oschina.net/endeavour/blog/542715

【感谢龙石数据为本站数据中台建设方案 http://www.longshidata.com/pages/government.html,感恩 】
上一篇:耳机相关:Airpods换电池还是买BeatsFlex
下一篇:没有了
网友评论