- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如主题所示:Is equals() 影响 vector add() remove() 方法的行为。
我有Vector<T> v;
1.remove()
如果我不重新定义 equals()
,方法将正常工作或 hashCode()
在 type T
中发挥作用?
2.add()
如果我不重新定义 equals()
,方法将正常工作或 hashCode()
在 type T
中发挥作用?
最佳答案
T
定义equals()
,Vector.remove
将使用默认的equals()
实现,即对象标识(==
)。Vector.add()
不使用 equals()
。它会很乐意添加重复项。无论哪种情况,Vector
根本不使用 hashCode
,因此 hashCode
的实现(或缺少)不会影响Vector
的操作。但是,如果您为元素类型重新定义 equals()
,则必须重新定义 hashCode()
才能使其他集合结构正常工作。
附言您可能应该使用 ArrayList
而不是 Vector
。来自 the docs for Vector
:
If a thread-safe implementation is not needed, it is recommended to use
ArrayList
in place ofVector
.
即使需要线程安全的实现,通常最好还是提供自己的同步。 Vector
提供的单函数调用同步通常粒度错误。
关于java - 是 equals() 和 toHashCode 影响 vector add() remove() 方法的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13553094/
我们目前广泛使用 GetHashCode 方法将哈希代码存储在数据库中以跟踪唯一项目。 MSDN 在这里有一个可怕的条目 "GetHashCode方法的默认实现不保证不同对象的返回值唯一。此外,.NE
如主题所示:Is equals() 影响 vector add() remove() 方法的行为。 我有Vector v; 1.remove()如果我不重新定义 equals(),方法将正常工作或 h
我是一名优秀的程序员,十分优秀!