1

全部,

我有一个问题需要解决,但我不知道如何有效地解决它。假设我有一个具有多个属性的对象集合,并且每个属性可以采用多个值。

例如,在伪代码中,对象可能如下所示:

Object.Color  
Object.Size  
Object.Sides  
Object.Dimensions  

我希望能够获取集合中与一组颜色、一组尺寸、一组边和一组尺寸相匹配的所有对象。

现在,我的代码基本上是如果 ColorSet 中的 Object.Color 和 SizeSet 中的 Object.Size 和...以及 DimensionsSet 中的 Object.Dimensions 然后我标记要处理的对象(通过使用字典)。

有没有更有效的方法来做到这一点?我可以创建一个数据结构或算法来帮助我有效地解决这个问题吗?

干杯!

4

1 回答 1

2

如果您只想做一个这样的查询,那么您可以做的不多。相反,我假设您想要执行多个此类查询。

创建从属性映射到具有这些属性的对象集的字典。例如,对于颜色,您可能有从Redto{obj1, obj2, obj3}Blueto的映射{obj4, obj5}。对每个属性(颜色、大小、边、尺寸)执行此操作。

然后,您对整个集合表达您的查询。ColorSet 中的 Object.Color 成为 ColorSet 中颜色对应集的并集。同时要求颜色和大小成为对象集与这些颜色和大小的交集。

这会更有效,因为您只需要检查可能具有所有属性的对象,例如,如果您对Blue对象感兴趣,您可以立即排除集合中的所有对象Red

于 2013-04-18T13:57:43.723 回答