【发布时间】:2014-10-22 04:16:52
【问题描述】:
假设我有一个 Citizen 类和一个 Population 类。人口包含一组公民。
在这个模拟中,市民可能会死亡。目前,为了代表公民的死亡,我销毁了对该公民对象的所有引用,因为人口可能不包含死亡公民。
我希望能够在公民重叠的地方创建多个 Population 对象。前任。公民 C 可能同时属于人口 A 和人口 B。但是,这使公民死亡变得困难,因为如果发生死亡,我将不得不从 A 和 B 中删除公民 C。有时 A 和 B 甚至不在同一个范围内。
此外,每个公民必须至少属于一个人口。
一般来说,我将如何组织我的 Population 和 Citizen 课程,以确保在该公民死亡后将其从所有 Population 实例中完全删除?
我正在考虑让 Citizen 成为 Population 的成员类,但我不知道从那里去哪里。
谢谢。
【问题讨论】:
-
如何 Citizen 包含她所属的人口列表。
-
这是目前最可取的解决方案,但我不愿为每个公民存储人口参考列表,因为我的模拟可能涉及数以万计的公民和数百个人口,这似乎是很多浪费的内存。如果没有更好的解决方案,我可能会接受它。谢谢。
-
在这种情况下,也许不要将整个人口对象存储在列表中,而只是将其
id或列表中的其他键存储。 -
请原谅我的无知,但不是通过引用存储的对象列表吗?我不确定 List
与 List 相比如何节省大量内存。 -
你是对的。通常对于对象引用,在 32 位机器上是 32 位,在 64 位机器上是 64 位。因此,使用原始 int 可能会有所收获。但同样,这可能不值得付出努力,我会选择我原来的解决方案。
标签: java oop reference garbage-collection