0
假設我已經定義一個列表作爲MyDelayed
檢查的對象是否存在於對象的一些成員變量
private BlockingQueue<MyDelayed> DelayedIds = new DelayQueue<>();
類的基礎上,一個列表是這樣的: 私有類MyDelayed器具延遲{
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
}
}
現在假設我想在DelayedIds
列表中添加類MyDelayed
的對象。 我可以通過使用add
函數來實現。
但是,如果我想在列表中添加obbject,只有列表不包含MyDelayed
類別的對象,它具有與我試圖插入的myId
相同的屬性。
顯然DelayedIds .contains(new MyDelayed(myId))
將無法正常工作。
有沒有簡單的方法來檢查這件事? 我錯過了什麼嗎?
你可以從'MyDelayed'開始實現'equals'(和'hashCode')。 –
是的,我也在考慮重寫equals函數,但我將如何調用該函數? –
['BlockingQueue.contains()'](https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html#contains(java.lang.Object))將調用它爲你,所以你不必做任何事情,但實施'equals',使兩個具有相同id的對象被認爲是相等的。 –