【发布时间】:2016-10-21 17:21:24
【问题描述】:
这是一个面试问题,我一无所有,没有任何想法。
假设我有一个 Employee 类,它包含三个字段 EmpId、EmpName、EmpAddress。
现在我的工作是确保我创建的所有对象在EmpId 的基础上都是唯一的,这样当我尝试创建两个具有相同EmpId 的对象时,必须有一种机制来停止/警告关于它,也许编译器警报或任何逻辑都可以。
我在采访中唯一能想到的就是使用Map(即HashMap),其键为EmpId,以确保唯一性。
我知道 DB 中的主键可以确保这一点,但我如何在 Java 本身中处理它。
对此类行的任何建议/想法将不胜感激。
【问题讨论】:
-
“编译器不允许我这样做”你确定这部分作业吗?
-
听起来您需要以确保唯一性的方式生成
EmpId,而不是让用户创建任意值。同步的静态工厂方法可以为此工作。同步工厂方法也适用于您的地图创意。 -
您的解决方案看起来不错。具有同步访问的
static long计数器将是一个更简单的解决方案。 -
好吧,如果允许框架,这可以很容易地在 java 中使用带有主键注释的 Hibernate 来完成。
-
EmpId必须作为构造函数参数传递吗?如果没有,您可以参考@MadPhysicist 的建议。
标签: java sorting collections unique