我目前正在创建一个大型项目,因此我希望尽可能高效地完成所有工作。
在我的项目中,我有一个名为Teams的类,它包含Team对象的HashMap(Integer,Team)。 Team的每个实例都有一个唯一的ID(整数)。
还有一个名为Player的对象。可以将每个Player实例分配给一个团队(但并非总是如此)。
现在,我想知道什么是最好的方法来了解玩家被分配到的球队:
- >将团队的ID存储在Player(私有int团队)中,然后使用此ID从团队中的HashMap获取团队。
- >存储对玩家团队的参考(私人团队)
有谁知道哪个更好,哪个最重要的专业人士,骗局和危险是什么?
谢谢!
答案 0 :(得分:6)
使用私人团队!除非有充分的理由,否则其他类不需要知道对象的ID。不要在Java中实现数据库结构。 Java被设计为基于对象,以这种方式使用它。
您应该持有Team实例的其他几个原因:
答案 1 :(得分:0)
显然,如果不知道它将被使用的背景,就不可能肯定地说这里 - 但从代码设计的角度来看,“自然”的期望是团队包含玩家,所以团队会参考玩家对象,而不是相反。
如果你开始搞乱ID并需要存储大量不同的对象,听起来好像你需要更多的数据库,在这种情况下,如果你不想退出,请查看类似HSQLDB的内容Java的。
答案 2 :(得分:0)
使用对象引用作为HashMap(或任何Map)中的键的潜在危险在于,如果操作不当,它可能会成为内存泄漏。
如果仍有对象的引用,则不会对对象进行垃圾回收。如果用作Map中的键,则将其视为对该对象的引用。
你可以绕过这个using WeakReference。
在您描述的情况下,您可能应该使用对象作为键,但要注意上述条件。
答案 3 :(得分:0)
private Team team
是您提到的两种方法之间的路径。如果您存储了Id,那么如果更新HashMap会发生什么?这会产生不必要的依赖关系。
答案 4 :(得分:-1)
您使用数据库吗?如果是这样,请将团队的ID存储在播放器中,否则我建议您存储团队的参考。