我有散列映射<< String, AddressBO >>
串key
和类作为value
,其中AddressBO
是具有add1
,add2
,city
,state
,zip
等领域,并在地图我只有两个一类键 - 小学和中学有价值的是AddressBO
的对象。现在我必须比较地址是相同还是不同,即两个对象的值是相同的。为此,我必须覆盖等于和hashcode
方法在AddressBo
类或implement comparator interface
?的HashMap <字符串,AddressBO>在Java
-2
A
回答
0
这个问题其实没有什么关系HashMap
,它更多的只是“我怎么在java中比较对象”。是的,如果您想做任何不仅仅是参考匹配的事情,您需要覆盖equals
。此外,如果您覆盖equals
,则还应覆盖hashCode
以维持equals
和hashCode
之间的合同。虽然hashCode
对于HashMap
对象的值是无关紧要的,但如果您尝试将对象用作另一个HashMap
的关键字,则可能很重要。重写compareTo
是你应该做的事情,如果你打算把你的对象放在一些可能进行排序的结构中。
0
的Comparable
接口是用于排序,不相等的测试。当然,如果两个对象在逻辑上相同,你应该得到a.compareTo(b)=b.compareTo(a)=0
,但是反过来并不总是对的。假设你想按姓氏和名字按字母顺序排列一个人名单。有两个人叫John Doe,一个是1956年出生的,一个是1996年可以按任何顺序上市 - 但他们不是同一个人。
如果要测试两个对象是否相等,请执行equals(Object)
(和hashCode()
,当然)。
0
如果要比较一个类的两个对象,类应该实现comparable
接口。你也应该重写了hashCode和equals(即使你不希望使用这些功能...因为事情可能会改变未来,你还不如实现,同时你还了解什么是您的复杂对象中的事情)
如果你看看equals()
的定义(“javadoc的Java语言),你会注意到它必须定义一个平等的关系(自反,对称和传递)和检查equals(null)
应该总是返回null。
同样, hashCode()
也必须一致(相匹配equals()
相关问题
- 1. 字符串HashMap的JAVA
- 2. 获得指数<HashMap的<字符串,字符串>>
- 3. 的ArrayList <HashMap中<字符串,字符串>>为String []
- 4. 性能的HashMap <字符串,可比>对的HashMap的<字符串,对象> - Java的
- 5. 从HashMap的<字符串,字节>
- 6. 读的HashMap <字符串,HashMap的<双,整数>
- 7. 搜索一个HashMap <字符串,ArrayList的<Users>>或HashMap中<字符串,HashSet的<Users>>
- 8. 属性的HashMap <String,字符串>
- 9. 的Java的HashMap <String,字符串>有LinkedHashMap的价值
- 10. 在我的HashMap的HashMap使用<字符串,字符串>作为重点对象<K,V>
- 11. 获取的ArrayList <HashMap的<字符串,字符串>>值
- 12. 问题<HashMap的<字符串,字符串>>和if语句
- 13. 搜索查看与customlistview和ArrayList <HashMap的<字符串,字符串>>
- 14. 的Java/Android的 - 搜索的ArrayList <HashMap的<字符串,字符串>>匹配键 - >值
- 15. 演员的HashMap <字符串,整数>使用的HashMap <字符串,双>
- 16. 这可能吗? :HashMap的<字符串,字符>
- 17. 排序ArrayList <HashMap <字符串,字符串>>使用值
- 18. 在ArrayList中的HashMap <字符串,字符串>检索从键/值值
- 19. 的HashMap <字符串,ArrayList的<String>>
- 20. 安卓插入多个单项成的ArrayList <HashMap的<字符串,字符串>>从的HashMap <String,字符串>
- 21. <字符串,对象> - Java的
- 22. HashMap字符串键
- 23. Java的转换{字符串,字符串} []地图<字符串,字符串[]>
- 24. 把HashMap中<字符串,对象>在的JSONObject
- 25. JSON字符串的HashMap JSONSIMPLE
- 26. 更新ArrayList <HashMap <字符串到ListView(undefined simpleadapter错误)
- 27. 转换一个HashMap <整数,列表<String>>到的HashMap <字符串,HashSet的<Integer>>
- 28. 放ImageView的SRC来的HashMap <String,字符串>
- 29. 如何分配的HashMap的ArrayList <字符串,双[]>列出
- 30. 新的Android - 理解的HashMap <字符串,
你可以试试机器人的所有对象返回相同的值h解决方案。它会工作。 – Antoniossss
值不是哈希,只有键,所以重写hashcode是相当无用的。无论您是创建equals还是compareTo方法,还是创建比较器,都无关紧要,它们都可以工作。 – Martin