我正在尝试创建一个HashMap
,如果该行中还没有对象,则将它们添加到行中。这是我检查的方式:
if (!waiting.containsKey(p)) {
waiting.put(current, p);
current++;
}
其中
p
是我们的对象,与Integer
存储在一起。但是,当我运行此代码时。它将同一对象多次存储在不同的整数下,如何防止这种情况? 最佳答案
那是因为您使用containsKey
而不是object
调用key
:
参数必须是Integer
键
Integer lKey = 0;
if(!waiting.containsKey(lKey)){
waiting.put(current, p);
current++;
}
如果您的对象具有标识符,请将该标识符用于地图。
if(!waiting.containsKey(p.getId())){
waiting.put(p.getId(), p);
current++;
}
否则使用containsValue():
if(!waiting.containsValue(p)){
waiting.put(current, p);
current++;
}
但是您必须覆盖equals方法。