本帖最后由 sinat_20150167 于 2014-11-21 10:39:52 编辑

解决方案 »

  1.   

    ArrayList 本身就没有去重的功能
    要去重的话,可以将ArrayList 中的元素放入set中,达到去重效果
      

  2.   

    1、ArrayList在添加元素的时候是自动调用equals进行元素比较的,对吗?
          不对,ArrayList 添加时,顺序存放元素,不会进行比较什么的操作
    2、那为何我改写了equals后,仍然不去重复呢?看下面代码。
           本身就不具备去重的功能
    3、相比之下,HashSet是不是添加元素的时候先自动调用hashCode,如果相同在hashCode中再自动调用equals进行进一步比较啊?其实HashSet并不是必须去重,而是提供了方便的去重方法而已对吧。
           HashSet 的去重,就是根据hashcode 和 equals 方法来判断的,所以重写hashcode 方法和 equals 方法可以改变去重的条件