java - 当 Key 是自定义类对象时,如何使用 String 从 HashMap 中检索值?
问题描述
我有一张HashMap<CustomClass1, ArrayList<CustomClass2>>
叫地图。
是否可以ArrayList<CustomClass2>
使用 CustomClass1 中包含的字符串?例如我想说map.get("zone1")
并得到匹配的ArrayList。这是一个学校项目,我必须使用上面描述的 HashMap。这类似于我的代码:
public class Main {
public static void main(String [] args) {
HashMap<CustomClass1, ArrayList<CustomClass2>> map = new HashMap<CustomClass1, ArrayList<CustomClass2>();
CustomClass1 example = new CustomClass1("zone1");
map.put(example, new ArrayList<CustomClass2>());
//Later in the code where I don't have the objects in scope (except for map)...
ArrayList<CustomClass2> value = map.get("zone1");
}
class CustomClass1 {
private final String name;
//Additional variables
public CustomClass1 (String name) {
this.name = name;
}
@Override
public int hashCode() {
return name.hashCode();
}
@Override
public boolean equals(Object obj) {
...
String test = (String) obj;
if(test.equals(this.name))
return true;
...
}
}
}
到目前为止,我已经尝试在我的 CustomClass1 中覆盖 hashCode() 和 equals() 方法,以便它使用字符串的 hashCode。据我了解,当我调用 map.get(obj) 方法时,它调用 obj.hashCode() 来查找正确的存储桶,然后调用 obj.equals() 来查看它是否是正确的对象。我认为我的想法是错误的,因为我不断得到空值,而 CustomClass1 中的 equals() 方法永远不会被调用。
请参阅解决方法/解决方案的评论。
解决方案
推荐阅读
- java - Eclipse 的 javaCompletionProposalComputer 的内容辅助不起作用
- javascript - 如何使用 Html 从 Select Option 调用 JavaScript 函数
- colors - graphviz:有没有办法只显示我定义的子图的子集或有黑白版本(禁用颜色)?
- sqlite - 我可以直接使用 SQLite 查询压缩管道分隔表吗?
- javascript - 使用 d3 为活动任务的折线图准备数据
- python - python查找特定文件的全局变量而不导入它
- imagemagick-convert - 将图像裁剪到较小的图层?平铺较小的层以匹配较大的层?
- vhdl - 为什么信号分配不在第一次迭代中执行?高密度脂蛋白
- python - 除一个必须传递的所有可选参数
- database-design - 外键序列