0

我有一个文本文件,其类型完全相同:

**Unique-Key_1**
Value1
Value2

**Unique-Key_2**
Value1

**Unique_Key_3**
Value1

(请注意,键和值不是固定的。它们可能会随着时间的推移而增长,但有一点可以确定:它将始终遵循这种结构)

我的程序想要搜索一个键,然后检索它下面的所有值。

我对此有一些可行的解决方案。

1)我应该使用字典类型,然后当我的应用程序加载时读取所有键和值并填充该列表?

2)我可以在运行时使用文件访问/搜索方法并基于一个键,搜索它然后检索值吗?

3)哪种方法是最佳方法,或者是否有任何方法或任何其他方法可以达到相同的效果?

4

2 回答 2

4

需要考虑的事项:

  1. 在搜索数据之前,应用程序是否有时间加载和解析文件?如果是这样,请考虑将文件解析为字典。如果没有,请根据需要解析文件。
  2. 文件会很大吗?如果是这样,将其解析为 Dictionary 可能会占用太多内存。考虑一个 LRU 缓存,例如C# 的对象缓存
  3. 文件中的键是否已排序?如果是这样,则可以对文件进行二进制搜索以加快文件解析。
  4. 数据是否经常变化?如果是这样,解析文件将保证数据是最新的,但代价是数据访问速度较慢。

另一种选择是将值加载到数据库表或键/值存储中。这允许在需要时以合理的访问速度更新数据,但以维护和运行数据库为代价。

于 2012-09-20T11:45:32.300 回答
0

好的,如果文件不是那么大,我会推荐这种Dictionary方法,因为它可以在运行时更轻松、更高效地访问它。但是,如果文件太大而无法保存在内存中,您可以使用此答案中提供的算法来搜索它。

于 2012-09-20T11:47:28.190 回答