我应该使用什么数据结构?哈希表、数组……?

What data structure should I use? HashTable, Array...?

我必须永久保存(或至少在下次执行之前)table,例如:

|  ID  |  Color  |
|------|---------|
| 0001 |  Red    |
| 0002 |  Blue   |
| 0003 |  Green  |

我想将它保存在外部 XML 文件中,但我不知道我应该在内部使用哪种数据结构来访问这些数据,因为我想要某种迭代元素,但又快又简单访问并保存到外部 XML 文件中,如果我想添加新关系,ID 必须是 0004.

我的意思是,我应该使用 Hashtable、DataTable、Array...吗?我应该更改导出此关系的方式还是最好(简单快捷)的方式是将它们导出到 XML 文件中?

因为泛型几乎没有理由再使用 Hashtable。 将这些值存储在内存中的最佳方式是通用字典(参见:https://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx)。因此,假设您的 "ID" 是 int 而您的 "Color" 是 string,请使用:Dictionary<int, string>。这些字典速度很快(O(1) 运算),而且它们不需要像 Hashtable 那样的任何转换。

要将其存储在文件中,有多种选择。您可以尝试将字典放在 class 中,然后使用以下方法将整个 class 存储到 XML 文件中:

如果您打算将记录转换为 XML,我认为您可以使用 DataTable。它有 DataTable.WriteXml() 方法,可以很好地完成你的工作。

但如果您需要更快的访问速度和一些操作,请使用词典。至少访问速度比DataTable快很多。

有多少数据?它改变了吗?数据是如何访问的?

如果有数百万行未更改并且查找始终按 ID,那么 Dictionary<int, Color> 可能是最好的。

如果有几十行,由任一字段更新和访问,则自定义类型的简单数组(id 和颜色属性)进行简单的线性查找可能是最好的(不需要维护数据顺序节省了足够的时间来进行更昂贵的查找。

(无论哪种情况,当您在内存中完成所有工作时,简单的持久性格式将是最好的:在运行时为您提供所需的灵活性。) 任何实际情况都会介于两者之间。最后,如果性能足够重要,您将尝试一种方法并进行衡量;然后另一种方法和措施。 (因此隐藏内部细节的一点抽象是重要的起点。)重复直到满足性能要求。