我有散列映射<< 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