[英]Cache that only uses the reference of the key object in java (and not hashCode or equals)
我有一個類可以多次運行一些昂貴的計算。 我想為它添加一個緩存,例如:
private Map<MyObj, Result> cache = new HashMap<>();
private Result getFoo(MyObj myObj) {
Result r = cache.get(myObj);
if (r == null) {
r = expensiveCalculation(myObj);
}
return r;
}
因為我知道兩個 MyObj-s 可以相等的唯一方法是它們是否相同(引用),所以我不希望緩存計算 hashCode() 和 equals()。 有沒有辦法讓 Map 只使用散列參考?
或者像這樣緩存的更好方法?
請注意,這沒有優化。 沒有任何好處,您的代碼會變得更加復雜。
因為我知道兩個 MyObj-s 可以相等的唯一方法是它們是否相同(引用),所以我不希望緩存計算 hashCode() 和 equals()。
始終計算hashCode
以在哈希表中進行存儲。 在鍵對象上調用 equals 方法之前,哈希表實現中的一個常見優化是首先檢查相同的引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.