这是一个简单的编程问题。我不是Java专家。假设我使用自定义类Company和Employee的对象,类似于许多关系型数据库示例:
class Employee
{
Company company;
}
class Company
{
String name;
}
我需要确保不同的Company
对象具有唯一的名称,即不能有两个这样的对象具有相同的名称,因为在我的观点中这没有意义,并且会浪费内存 - 如果两个员工在IBM工作,则有一个带有该name
的Company
对象,结束。
目前我的想法是将Company
构造函数设为私有 - 这样分配具有任意名称的Company对象的工作将委托给一个受信任的方法 - 该方法将拒绝任何后续尝试创建已经存在名称的对象或返回现有的或新的对象(如果必要则创建此对象)。
问题是,我不确定如何优雅地完成这项工作。一个好的解决方案是不必每次请求具有名称的Company
对象时都进行O(n)
查找 - 因此,也许可以使用哈希映射或二叉树来方便地实现?我还想覆盖Company
对象的标识方式 - 这引导我到这里:我将重写Object.equals
和/或Object.hashCode
方法吗?