2010-11-09 216 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