如主题: Is equals() 影响向量 add() remove() 方法的行为。
我有Vector<T> v;
remove()1.如果我不重新定义equals()或在其中hashCode()起作用,该方法是否正确type T?
add()2.如果我不重新定义equals()或在其中hashCode()起作用,该方法是否正确type T?
equals()for T,Vector.remove将使用默认equals()实现,即对象标识 ( ==)。Vector.add()不使用equals()。它会很高兴地添加重复项。在任何一种情况下,Vector根本不使用hashCode,因此执行hashCode(或缺少)根本不会影响操作Vector。但是,如果重新定义equals()元素类型,则必须重新定义hashCode()其他集合结构才能正常工作。
PS您可能应该使用ArrayList而不是Vector. 从文档中Vector:
如果不需要线程安全实现,建议使用
ArrayList.Vector
即使需要线程安全的实现,通常最好还是提供自己的同步。提供的单函数调用同步Vector通常在错误的粒度上。