【发布时间】:2012-06-20 07:19:56
【问题描述】:
我有大量的对象。每个对象都有一个唯一的 GUID。我需要这个 GUID 的地图对象。我现在使用 System.Collections.Hashtable。问题是添加对象 hashset 会改变其大小并导致大对象堆的碎片。它也需要两倍于我拥有的对象的内存。我需要减少内存使用量。
我需要的数据结构特征:
- 添加对象
- 按 ID 移除对象
- 按 ID 查找对象
- 运行数据结构 (foreach) 中的所有对象
为此目的最好的数据结构是什么?我知道有红黑树和 AVL 树,但我不知道哪种树更好用。也许还有另一种适合通过唯一标识符或字符串映射的树数据结构?哪种数据结构运行得更快?
【问题讨论】:
-
您的对象包含什么?
-
尝试查看 btree,但我不确定您在记忆方面获得了多少。 en.wikipedia.org/wiki/B-tree
-
我无法回答您的实际问题,但我会使用 Dictionary 而不是 Hashtable。字典是通用的,您可能会节省大量类型转换,从而节省 CPU 时间。
-
CPU不像内存那么关键,所以我用Dictionary或者Hashtable没有区别。
标签: c# data-structures