所以这更像是一个“试图理解”的问题,而不是“我需要一个解决方案”的问题。对于一项任务,我们被要求创建一个包含 itemNumber
和 price
的产品列表,但每个只有一个,因此没有具有相同 itemNumber 的项目
。我想我可以创建一个集合,这样就可以消除重复问题。但是如果我添加一个 producta
1 , 4.99 和一个 productb
1 , 2.99 ,两个产品都会被添加。
这是否意味着集合确定这些产品是不同的,因为它们具有不同的价格,因此可以添加到集合中?
最佳答案
假设您使用的是 java.util.Set 的一种形式。 Java 中的集合使用 equals 方法来比较两个对象。您想要覆盖要比较的类(产品)的 equals 方法,以告诉集合它们在项目编号匹配时相等。
https://docs.oracle.com/javase/7/docs/api/java/util/Set.html
编辑:正如 911DidBush 和 Todd Sewell 所提到的,无论何时重写 equals 方法,您都需要重写 hashCode 方法,以免破坏 hashCode 的约定。
来自 Java 文档:
Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.
http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html
关于java - 集合什么时候允许重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41827204/