2010-11-09 184 views
3

我有一个List<Discount>,包含大约100000个折扣值。在这里,折扣是一个类,我有一个List<Product>其中有约200000条记录。二进制搜索对象列表?

我有一个每个遍历List<Product>的所有记录。 对于产品列表中的每次迭代,我从产品项目中获取一些值并将其添加到包装类中。这个包装类还包含一个字段折扣和每个产品我必须遍历所有的折扣。

存在的问题是遍历此产品列表需要花费很多时间。 什么是使这个更快的最佳方式?

我在想二进制搜索,但我发现很难实现?

任何有关如何去做这件事的建议?

回答

4

如果您需要快速查找折扣值,List可能是错误的数据结构。考虑使用类似Dictionary的东西,这是专门为此目的而设计的。

+0

谢谢海因茨。与List相比,速度更快。还有什么方法可以改善表现? – francis 2010-11-09 12:32:31

+0

现在想不出任何事情。如果你需要包装所有的产品项目,你将不会遍历你的'List '。由于您将折扣放入“Dictionary”中,因此查找这些值应该相当快。 – Heinzi 2010-11-09 23:54:50

1

您是否考虑过使用Dictionary而不是列表?搜索会更快。

3

除了Heinzi的建议之外,我还建议重新审视一下设计/实现,这些设计/实现迫使您将数十万个对象加载到内存中,并对彼此进行交叉查找 - 也许您应该实施这种数据库级的逻辑可以获得最佳性能。

+1

+1,好点。 – Heinzi 2010-11-09 23:55:31