在爪哇。我想存储用户定义的对象和与之相关的整数。我应该使用哪种数据类型?我已经尝试过 HashMap,但显然它无法存储没有 equals() 方法的对象
问问题
86 次
2 回答
2
我已经尝试过 HashMap,但显然它无法存储没有 equals() 方法的对象
更准确地说,如果不满足以下两个条件之一,就不能使用对象作为 Map 的键:-
- 覆盖
equals
andhashcode
, or - 不覆盖它们。
因此,您可以轻松地将对象用作键,而无需根据第二个条件使用 equals 方法。
但是,如果您希望根据新创建的对象找到您的密钥,最好遵循第一个条件。因为方法的默认实现equals
比较对象的引用值而不是内容本身。
于 2012-12-23T17:43:16.943 回答
0
您应该坚持使用哈希映射。它适用于所有情况。
这是用户定义的一些类
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));
}
}
于 2012-12-24T02:11:24.110 回答