在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'是一个问题? –