java - 集合什么时候允许重复?

标签 java set

所以这更像是一个“试图理解”的问题,而不是“我需要一个解决方案”的问题。对于一项任务,我们被要求创建一个包含 itemNumberprice 的产品列表,但每个只有一个,因此没有具有相同 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/

相关文章:

java - 不确定将 hibernate.cfg.xml 放在 Spring 项目中的何处?

java - 从内部类的对象访问外部类函数

java - 关于将特定长度的单词放入相应的集合中(Java)

c++ - C++字符串处理中的重复字符跳过

c++ - 我可以希望从映射中删除元素或通过迭代器设置元素不比对数差吗?

java - 如何使用 ApprovalTests 审批日志

java - 在PDF的每一页附加水印图像

java - Jboss AS 7 LdapExtLoginModule配置

c++ - 如何迭代 STL 集并有选择地删除元素?

algorithm - 将距离设置为 MinHashing 算法的相似性度量