【问题标题】:What happens if I change an Object that is inside a HashSet?如果我更改 HashSet 中的对象会发生什么?
【发布时间】:2014-10-28 10:25:08
【问题描述】:

我创建了一个名为 Region 的自己的类,并将 Region 的实例存储在 HashSet 中。我使用 HashSet,列表中没有相等的对象。 Region的String名称在HashSet中应该是唯一的,所以我重写了equals方法。

我的问题:

如果我将两个具有不同名称的区域存储到 HashSet 中,然后我使不同的名称相等(通过名称的 setter)会发生什么?

这不是重复的。另一个问题是关于相等的 HashSet,而不是关于 HashSet 中的相等对象。

【问题讨论】:

  • 你尝试的时候发生了什么?
  • 未定义的行为。不要那样做。在此处阅读第一个“注释”:docs.oracle.com/javase/7/docs/api/java/util/Set.html
  • "如果......会发生什么" 你知道你可以这样做并且看对了吗?
  • @Takendarkk 我不认为这是一种可以“试试看”的东西。可能如果他更改名称,则不会立即发生任何事情,但是将来的某些操作 可能 现在会失败,但不一定会失败,并且 OP 不知道将来要尝试哪个操作。大多数“如果”问题可以按照您的方式解决,但不是全部

标签: java set equals hashset


【解决方案1】:

如果对象的值以影响等于比较的方式更改,而对象是集合中的一个元素,则不指定集合的​​行为。

-- 设置Javadoc

【讨论】:

    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多