繁体   English   中英

集合何时允许重复?

[英]When does a set allow duplicates?

所以这更像是一个“试图理解”的问题,而不是“我需要一个解决方案”的问题。 对于作业,我们要求创建一个具有itemNumberprice的产品列表,但每个只有一个,因此没有相同itemNumber 我想我可以创建一个集合,这将摆脱重复问题。 但是,如果我添加producta productbproductb ,则添加两种产品。

这是否意味着,该集合确定这些产品是不同的b / c它们具有不同的价格,因此可以添加到集合中?

假设您使用的是java.util.Set形式。 java中的集合使用equals方法来比较两个对象。 您希望覆盖要比较的类的Equals方法(Product),以便在项目编号匹配时告诉该组它们是相等的。

https://docs.oracle.com/javase/7/docs/api/java/util/Set.html

编辑:正如911DidBush和Todd Sewell所提到的,每当你覆盖equals方法时,你也会想要覆盖hashCode方法,以免破坏hashCode的契约。
来自Java doc:

请注意,通常需要在重写此方法时覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等的对象必须具有相等的哈希代码。

http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html

来自Set javadoc的引用:

不包含重复元素的集合。 更正式地说,集合不包含元素对e1和e2,使得e1.equals(e2)和至多一个null元素。

如您所见,通过调用相应命名的equals方法来确定两个对象是否被视为相同。 请记住,当您实现equals时,您还应该实现hashcode ,如此equals javadoc中所述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM