【发布时间】:2014-07-01 19:52:33
【问题描述】:
我遇到了一个非常基本的问题。
我需要确保一个对象只在一个列表中。 例如我有两个列表(伪代码):
Object person = new Object();
List waitingForCoffe = new List();
List waitingForTee = new List();
我如何确保该人在:
- 没有列表
- 列出 waitingForCoffe 或
- 列出 waitingForTee
但不能同时出现在展位列表中。 我是否需要确保在我的代码中或者已经存在某些东西? 设计模式?
【问题讨论】:
-
检查两个列表的交集是否为空。
-
您在这里使用哪种编程语言?您可以检查两个列表的交集,如果它为空,则表示他要么在其中一个列表中,要么都不在。
-
这与您的实现无关,但我会创建一个带有一些字段的 Person 对象,用于存储等待咖啡/等待开球的状态。然后我会覆盖 hashcode / equals 方法,将这些对象放入 Set :)
-
@gipinani 我也在考虑亲自创建一个字段,无论是在“waitingForCoffe”还是“waitingForTee”中,我都可以保存信息。因此,我可以使用此信息从一个列表中删除对象,然后再将其添加到另一个列表中。但这对我来说似乎是一种黑客行为,尽管这种情况必须有一种设计模式。因为我有不止两个列表(有很多人),所以我担心交叉点会给我带来性能问题。
-
你也可以使用 List contains() 方法。 Apache CollectionUtils 可能有更多关于你需要的东西。我不知道设计模式是否可以代表您的需求,但是您可以将所有逻辑隐藏在一个内部处理您的列表/集合的类中,并使用一些公共方法返回谁在哪里
标签: list reference reference-counting