【发布时间】:2015-09-28 00:04:30
【问题描述】:
我有一个HashSet<User> 和一个在while 循环外声明的用户,在循环内我使用setter 方法设置名称,然后使用add(User) 将用户添加到HashSet。
这似乎只更新HashSet 中的单个用户。只有当我在 while 循环中声明用户时,每次都会向HashSet 添加一个新用户。
我在想这是因为如果HashSet add() method 接收到一个与当前在集合中的对象具有相同内存地址的对象,它只会更新该对象而不向 HashSet 添加另一个新对象。它是否正确?
然后在循环中实例化 User 将导致它具有不同的内存地址,因此作为新对象添加到 HashSet。
我可以把代码放在这里,但这是一个作业,我认为我的教授不希望我分享代码。如您所见,我的问题更多是关于 Java 语言而不是我的作业。但是,如果每个人都绝对需要查看代码,我会发布一些有用的东西。
【问题讨论】:
-
查看我对这个问题的回答:stackoverflow.com/q/29830784/217324,这似乎是同一个问题。顺便说一句,仅仅因为你不能发布给你问题的真实代码并不意味着你不能构建一个重现特定问题的示例。
-
@nathanhughes 很明显,它不像我预期的那样需要。如果需要,我会及时发布。