【发布时间】: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 不知道将来要尝试哪个操作。大多数“如果”问题可以按照您的方式解决,但不是全部。