假设我已将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))
无效。
有没有简单的方法来检查这件事? 我错过了什么吗?
答案 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(请参阅变量)。