2012-09-20 44 views
0

我有如下類型完全一致的文本文件:詞典列表或文件訪問方法或C#中的任何其他方法

**Unique-Key_1** 
Value1 
Value2 

**Unique-Key_2** 
Value1 

**Unique_Key_3** 
Value1 

(請注意鍵和值不fixed.They可能生長在時間,但有一件事是確認的:它將始終遵循此結構)

我的程序想要搜索一個鍵,然後檢索其下的所有值。

我有一些可行的解決方案。

1)我應該使用字典類型,然後當我的應用程序加載讀取所有鍵和值並填充該列表?

2)我可以在運行時使用文件訪問/搜索方法,並基於密鑰,搜索並檢索值?

3)哪種方法最佳?或者有什麼方法或者其他方法可以實現?

+0

考慮數據庫? –

回答

4

需要考慮的事情:

  1. 是否被搜索數據之前,應用程序有時間來加載和解析文件?如果是這樣,請考慮將文件解析爲字典。如果不是,則根據需要解析文件。
  2. 文件會非常大嗎?如果是這樣,將其解析爲字典可能佔用太多內存。考慮一個像Object cache for C#這樣的LRU緩存。
  3. 文件中的鍵是否已排序?如果是這樣,那麼文件上的二進制搜索可能可以加速文件分析。
  4. 數據是否經常變化?如果是這樣,解析該文件將保證數據是最新的,但代價是數據訪問速度較慢。

另一種替代方法是將值加載到數據庫表或鍵/值存儲中。這使得數據可以在需要時以合理的訪問速度進行片斷更新或完全更新,但需要維護和運行數據庫。

+0

字典是否支持鍵和值(我的意思是value1,value2,而不是一個鍵的唯一值?) –

+0

字典支持字典,因爲文件大小在中等水平上合理。不要太大! –

+0

@nowhewhomustnotbenamed。您可以使用Dictionary >來處理多個值。 – akton

0

好的,如果文件不是那麼大,我會推薦Dictionary的方法,因爲它會在運行時使訪問變得更容易和更高效。但是,如果文件太大而無法保存在內存中,則可以使用算法provided in this answer進行搜索。

相關問題