基于某个成员变量检查对象列表中是否存在对象

时间:2015-06-18 18:00:50

标签: java

假设我已将List定义为

private BlockingQueue<MyDelayed> DelayedIds = new DelayQueue<>();

班级MyDelayed如下: 私有类MyDelayed实现了Delayed {

    private String myId;
    private Long creationTime;

    MyDelayed (String myId) {
       this.myId= myId;
       this.creationTime = System.currentTimeMillis();
    }

    String getMyId() {
        return this.myId;
    }

    @Override
    public long getDelay(TimeUnit unit) {
      //TODO
    }

    @Override
    public int compareTo(Delayed o) {
        //TODO
    }  
}

现在假设我想在MyDelayed列表中添加类DelayedIds的对象。 我可以使用add函数来完成。

但是如果我想在列表中添加obbject,只有当list不包含类MyDelayed的对象时,该对象具有我试图插入的myId属性。

显然DelayedIds .contains(new MyDelayed(myId))无效。

有没有简单的方法来检查这件事? 我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您可以编写类似的内容并比较列表中的每个元素,看它是否包含您的ID。如果在任何时候你找到一个匹配的,你返回true,如果循环结束找到none,则返回false。

public boolean contains(String id){
    for (MyDelayed md : DelayedIds){ 
        if(md.getMyId().equals(id)){
            return true;
        }
    }
    return false;
}

现在要在添加之前进行检查,您可以执行以下操作:

if(!contains(myNewObject.getMyId())){
    DelayedIds.add(myNewObject)
}

此外,我建议您将DelayedIds重命名为delayedIds,以便关注coding standards(请参阅变量)。