如主题: 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
通常在错误的粒度上。