二进制搜索对象列表?

时间:2010-11-09 11:36:31

标签: c#

我的List<Discount>包含大约100000个折扣值。在这里,折扣是一个类,我有一个List<Product>,它有大约200000条记录。

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

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

我在想二元搜索,但我觉得很难实现?

有关如何解决这个问题的任何建议吗?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

您是否考虑使用Dictionary而不是列表?搜索速度会快得多。