2016-02-16 53 views
1

假設我有:使用對象的hashCode()和equals()實現他們已經重寫後

public class A { 
    @Override 
    public int hashCode() { 
     // some expensive calculation 
    } 

    @Override 
    public boolean equals(Object obj) { 
     // some expensive calculation 
    } 
} 

而且在我的代碼,某些時候,我希望與一個地圖作爲鍵類型使用對象的 hashCode()和equals()實現(即當且僅當它們引用同一對象時,類型A的兩個鍵纔會被視爲相等)。

這樣做的最佳方法是什麼?

+2

使用[IdentityHashMap?](https://docs.oracle.com/javase/8/docs/api /java/util/IdentityHashMap.html) – markspace

+0

@markspace完美,謝謝! – Ofer

回答

2

您可以覆蓋在實例

A a = new A(){ 
    @Override 
    public int hashCode() { 
    return System.identityHashCode(this); 
    } 
}; 

方法或用途,其採用了IdentityHashMapSystem.identityHashCode

相關問題