在Java中。我想存儲用戶定義的對象和與其相關的整數。我應該使用哪種數據類型? 我已經試過HashMap的,但顯然它不能存儲對象沒有equals()方法我可以使用哪種數據類型?
回答
我已經試過HashMap的,但顯然它不能存儲對象不 equals()方法
更準確地說,你不能用一個對象作爲地圖的關鍵,沒有滿足以下兩個條件之一的: -
- 同時覆蓋
equals
和hashcode
,或 - 忽略它們中的任何一個。
所以,你可以很容易地使用你的對象作爲關鍵,而不使用equals方法作爲第二個條件。
但是,如果您希望根據新創建的對象找到您的密鑰,最好遵循第一個條件。因爲equals
方法的默認實現比較參考值的對象而不是內容本身。
即使您重寫equals或hashcode,它也可以正常工作 –
@ rai.skumar ..當然,就存儲對象而言,它可以正常工作。但你永遠不會再從Map中取回你的鑰匙。 –
假設如果我只是覆蓋等於。在這種情況下,2個相同的對象可能被散列到不同的位置,但是當等於被覆蓋時,您將能夠恢復您的對象。 –
你應該堅持哈希映射。它適用於所有情況。
這是由用戶定義的一些類
public class UserDefinedObject(){
}
這裏是這個類與HashMap的
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<UserDefinedObject, Integer> stuff = new HashMap<UserDefinedObject, Integer>();
UserDefinedObject userDefinedObject = new UserDefinedObject();
stuff.put(userDefinedObject, 1);
System.out.println(stuff.get(userDefinedObject));
}
}
- 1. 要使用哪種數據類型?
- 2. 我比較哪種數據類型?
- 3. 我應該爲我的列使用哪種數據類型? [MySQL]
- 4. 我使用哪種Swift數據類型用於貨幣
- 5. MySQL:哪種數據類型可以處理特殊字符?
- 6. 哪種SQL數據類型可以容納鏈接
- 7. 我應該使用哪種類型的數據庫?
- 8. mysql ---我應該使用哪種類型?
- 9. 我可以在Java中使用哪種數據結構?
- 10. 使用大分數時要使用哪種數據類型?
- 11. 我可以使用哪種數據結構/類來表示一對多關係?
- 12. Oracle:使用'N'函數查詢 - 我應該使用哪種數據類型?
- 13. 我可以在Redis中存儲這種類型的數據嗎?
- 14. 這種類型的數據格式使用哪種數據結構?
- 15. 我應該在AlarmManager中使用哪種類型的類型?
- 16. 這是哪種類型的數據?
- 17. 分辨率的哪種數據類型
- 18. HTML的哪種數據類型?
- 19. 哪種數據類型選擇?
- 20. 我可以使用哪種類型的聯接重現這些結果
- 21. 我可以在哪裏瞭解不同類型的數據庫?
- 22. 哪種數據類型用於存儲用戶數據?
- 23. 以下函數返回哪種數據類型?
- 24. 在SQL Server 2008中,我可以使用哪種數據類型作爲長度爲13位的ID號碼?
- 25. Windows窗體應用程序 - 我應該使用哪種數據庫類型?
- 26. SQL何時使用哪種數據類型
- 27. 要使用哪種MySQL數據類型進行調度?
- 28. 澄清要使用哪種數據類型
- 29. 不確定要使用哪種MySQL數據類型
- 30. 哪種數據類型在gorm中使用時間?
好問題,使用狀況:請問您必須要與這些對象和做這個整數?根據給定的對象快速找到一個整數?根據整數快速找到對象?迭代對象 - 整數對?讓對象按關聯的整數排序? –
'HashMap'絕對*可以*存儲不覆蓋equals/hashCode的對象...您將只獲取參考標識行爲。現在,你怎麼想要它的行爲呢? –
爲什麼重寫'equals'和'hashCode'是一個問題? –