在Java中,可以創建使用引用等式而不是equals()
方法的HashMap
?使用引用相等的集合
回答
使用IdentityHashMap
類。這是HashMap
的變體,其中使用==
和System.identityHashCode()
代替Object.equals(Object)
和Object.hashCode()
。
請注意,此類有意違反java.util.Map
的API合同,其中要求該關鍵相等基於equals(Object)
。
作爲修正案,http://docs.oracle.com/javase/7/docs/api/java/util/IdentityHashMap.html – chiccodoro
嘿,大家好,編輯狂熱有什麼用? –
你看 - 我不敢編輯,我寧願給你鏈接作爲評論 - 儘管編輯是完美的。在StackOverflow中,我認爲這些「傢伙」對你的回答沒有任何粗魯的看法。 – chiccodoro
您可以重寫您插入到HashMap中的對象的equals方法以測試引用相等性。
如:
public boolean equals(Object obj) {
return this == obj;
}
IdentityHashmap類帶有標準的Java。來自JavaDoc:
該類使用哈希表實現Map接口,在比較鍵(和值)時,使用引用相等來代替對象相等。換句話說,在IdentityHashMap中,當且僅當(k1 == k2)時,兩個密鑰k1和k2被認爲是相等的。 (在正常Map實現(如HashMap的)兩個鍵k1和k2被認爲是相等的,當且僅當(K1 == NULL K2 == NULL:?k1.equals(K2)))
注意許多采用Map
的函數假設它們將使用equals
,而不是參考等式。所以要小心你將IdentityHashmap
傳遞給哪個函數。
- 1. MongoID查詢引用集合引用集合的集合
- 2. 使用對集合的接口引用
- 3. 引用相等運算
- 4. MongoDB - 使用索引的一個集合
- 5. 用於存儲可能相等的元素排序的集合?
- 6. 如何綁定到集合而不使用集合的索引?
- 7. 測試集合與訂購相等
- 8. 引用索引在Javascript中的集合
- 9. Scala中的java.lang.String的引用相等
- 10. 重寫相等的引導類來使用引導CSS?
- 11. VB6集合/對象引用
- 12. 2 many2many自引用集合
- 13. Java:通過引用收集集合的任意集合
- 14. 如何使用SequenceEqual LINQ方法檢查超過2個集合的相等性?
- 15. 獲取所有引用程序集以及應用程序引用程序集的引用程序集等
- 16. 使用lambdas的Java集合集合
- 17. 使用CompositeCollection展平集合的集合?
- 18. 確定集是否相等(套組成的集合)
- 19. 通用集合操作類,即交集,聯合,減等
- 20. 如何使相等的整數子集?
- 21. 將一個集合劃分爲K個不相等的子集合
- 22. 使用linq合併集合
- 23. 如何清理弱引用的集合?
- 24. 找到對集合的共享引用
- 25. MongoDB C#對其他集合的引用
- 26. 引用鑰匙集合中的對象
- 27. 清除集合對象中的引用
- 28. 具有多態引用的Java集合
- 29. 瞭解Java集合中的Java引用
- 30. mongodb:使用嵌套文檔或單獨的引用集合
你可以實現你自己的:) –
你的意思是用==來做內容的平等嗎? –
你是在談論「地圖」本身或其中的物品的平等嗎? – Paul