gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 03:40:07 24 4
gpt4 key购买 nike

如主题所示:Is equals() 影响 vector add() remove() 方法的行为。

我有Vector<T> v;

1.remove()如果我不重新定义 equals(),方法将正常工作或 hashCode()type T 中发挥作用?

2.add()如果我不重新定义 equals(),方法将正常工作或 hashCode()type T 中发挥作用?

最佳答案

  1. 如果您没有为T 定义equals()Vector.remove 将使用默认的equals() 实现,即对象标识(==)。
  2. 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 of Vector.

即使需要线程安全的实现,通常最好还是提供自己的同步。 Vector 提供的单函数调用同步通常粒度错误。

关于java - 是 equals() 和 toHashCode 影响 vector add() remove() 方法的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13553094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com