我在如何从使用自定义对象索引的 Map 中检索值时遇到问题 . 在我的例子中,我有一个Map,其中Model对象为Key,对象List为Value . Map似乎填充得很好,因为我遍历每个Key并将所有Model对象打印到控制台 .
我的问题是如何从Map中的特定条目获取Value .
Map mapSet = m.getMyMap()
for(Entry entry : mapSet){
println entry.key.getModel() //prints each Model
}
List testListBase = mapSet.get(new Model("BASE"))
List testListSearch = mapSet.get(new Model("SEARCH"))
我是否必须从Object覆盖 hashCode() 和 equals() 以检索Map中该条目的列表?
UPDATE
这里是简单的Model对象,但仍然无法使用检索密钥
mapSet.get(new Model("BASE"))
public final class Model {
private final String model;
private final static int count = 0;
private int id;
private Model(String model){
this.model = model;
id = ++count;
}
private String getModel(){
return model;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
result = prime * result + ((model == null) ? 0 : model.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Model other = (Model) obj;
if (id != other.id) {
return false;
}
if (model == null) {
if (other.model != null) {
return false;
}
} else if (!model.equals(other.model)) {
return false;
}
return true;
}
}