我正在嘗試確定以下問題的最佳方法:只有兩個屬性的對象
我有一個名爲Desk的類。書桌有很多屬性。辦公桌上可能有一些物體。當前的應用程序指定它可以在桌面上放置鉛筆,計算機或杯子。未來可能會添加更多的對象。它可以有一個或沒有一個對象。鉛筆具有Color屬性,所有對象都有一個ID和名稱。所有這些信息必須是持久的,因此以某種形式存儲在數據庫中。
難道我:
public class Desk {
public int property1;
public int property2;
...
public ISet<DeskObject> deskObjects;
}
public DeskObject {
public int deskObjectID;
public String name;
public DeskObject(name) {
this.name = name;
}
}
public Computer extends DeskObject {
DeskObject("Computer");
}
public Pencil extends DeskObject {
DeskObject("Pencil);
public Color color;
}
我還需要很容易地分辨哪些對象臺包含在O(1)時間。這意味着我將不得不重寫hashcode和等於(可能通過返回ID)DeskObjects,所以我可以做set.contains(object)。這似乎是矯枉過正和濫用對象。當然有更好的解決方案?
如果我理解你的Q,當你需要比較2個對象時,使用重寫'Equals'和反過來'Hashcode',是嗎? –
啊,是的,例如,我可以判斷書桌是否有鉛筆。 – BobTurbo