我正在尝试创建一个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方法。

10-06 16:03