【发布时间】:2012-09-20 07:59:26
【问题描述】:
我正在寻找建议。
我有一个带有 String firstName 和 String lastName 的 Person 类
当我要插入具有相同字符串的列表值时:
set.add(new Person("firstName","lastName"))
set.add(new Person("firstName","lastName"))
集合不过滤对象,它们仍然进入集合。 有什么建议可以在不覆盖 equales 和 hashcode 函数的情况下创建集合列表? 也许有番石榴或一些时髦的清单? 谢谢, 或者。
【问题讨论】:
-
覆盖
equals和hashCode有什么问题? -
我的类比 Person 例子更复杂。我正在使用 groovy,我有一个 groovy 类,它有 2 个域和更多变量,所以我不想改变我的相等,我只需要一次创建一些只依赖于我的类的 2 个字符串的集合。
-
如果您提供的代码被执行,您希望结果是什么?两个人在集合?只有第一个人在集合?通常结果是只有第二个人留在集合中。
-
@ork 最后,如果以正确的方式进行操作,并获得
equals和hashcode正确,您可能会好得多......人们会进一步跌倒该行,假设它们已正确实现,而不是您使用带有自定义比较器的 TreeSet
标签: java groovy set guava hashset