equals()和toHashCode是否影响vector add()remove()方法的行为

时间:2012-11-25 16:42:52

标签: java vector equals hashcode

与主题一样:equals()是否影响vector add()remove()方法行为。

我有Vector<T> v;

1.如果我不在remove()重新定义equals()hashCode()功能,type T方法是否正常?

2.如果我不在add()重新定义equals()hashCode()函数,type T方法是否正常?

1 个答案:

答案 0 :(得分:4)

  1. 如果您没有为equals()定义TVector.remove将使用默认的equals()实施,即对象标识(==)。< / LI>
  2. Vector.add()不使用equals()。它会愉快地添加重复项。
  3. 在任何一种情况下,Vector根本不使用hashCode,因此hashCode(或缺少{}}的实施不会影响Vector的操作。但是,如果您为元素类型重新定义equals(),则必须重新定义hashCode()以使其他集合结构正常工作。

    P.S。您可能应该使用ArrayList而不是Vector。来自the docs for Vector

      

    如果不需要线程安全的实现,建议使用ArrayList代替Vector

    即使需要线程安全的实现,通常也最好提供自己的同步。 Vector提供的单功能呼叫同步通常是错误的粒度。