Java - 为什么Map.put()覆盖而Set.add()不覆盖?
2022-09-01 23:47:32
我想知道让Java的方法覆盖集合中已经存在的等效键d值,同时不覆盖集合中已经存在的预先存在的等效值背后的原理是什么?Map.put(key, value)
Set.add(value)
编辑:
看起来多数人的观点是,一个集合中计算为相等的对象在各个方面都应该相等,因此Set.add(Object)是否覆盖等值的对象并不重要。如果两个对象的计算结果相等,但实际上保存了不同的数据,则 Map 类型集合是更合适的容器。
我有点不同意这个观点。
示例:包含一组“Person”对象的集合。为了更新有关该人员的一些信息,您可能希望传递一个新的、已更新的 person 对象,以覆盖旧的、过时的 person 对象。在这种情况下,一个人将持有一个识别该个人的主键,该集合将仅根据其主键来识别和比较人。此主键是人的身份的一部分,而不是 Map 所暗示的外部引用。