【发布时间】:2018-02-27 16:14:45
【问题描述】:
我有一个对象如下:
public class Record{
Int ID;
String title;
Date date;
Duration time;
public Record createRecord(int ID, String title, Date date, Duration time){
this.ID= ID;
this.title = title;
this.date = date;
this.time = time;
return this;
}
}
我将多个对象存储在一个列表中。在插入新记录时,我需要检查列表是否已经有一个只有相同标题和日期的对象,并替换其中的时间。
我正在寻找任何可以达到 O(1) 时间的解决方案。
【问题讨论】:
-
您使用哪种数据结构来存储您的对象?我会选择搜索时间复杂度为 O(1) 的 HashSet
-
我正在使用 HashMap,其中日期为键,对象列表为值。从 HashMap 中检索到对象列表后,我需要执行上述操作。
-
为什么不按您的 ID 字段进行比较呢?如果 ID 可以存在于其他对象中,那么拥有 ID 并没有多大意义……相反,拥有两个具有相同标题和日期的对象的概率不同。此外,您的构造函数中没有太多需要
return this;,在 Java 中,构造函数已经返回新的对象实例。 -
@AnthonyAudette 不幸的是,ID 不一定是唯一的,因此存在问题
-
在一个不相关的,你可能想把 createRecord 变成一个静态工厂方法
标签: java list object arraylist object-oriented-database