c# ' SortedDictionary当你不关心值的时候

本文关键字:不关心 当你 Value SortedDictionary Key | 更新日期: 2023-09-27 17:50:24

我使用SortedDictionary<Key, Value>来存储Key s的排序列表,但不关心存储Value s。Key有一组唯一性标准和另一组排序标准(即GetHashValue()Equals(Object obj)使用的属性与CompareTo(Key key)使用的属性不同)。

我知道它只存储对Value的引用,所以内存使用很小。在我的用例中,我永远不需要访问字典中存储的KeyValuePair<Key, Value>Value部分。

在这些情况下,是否有一些约定指定Value使用哪种对象?我目前使用相同的对象为KeyValue,也就是说,类型是Dictionary<Key, Key>,我使用.Add(key, key)来添加对象。

同样的问题也适用于SortedList<Key, Value>,但在这种情况下,我需要SortedDictionary<Key, Value>的插入性能。

c# ' SortedDictionary<Key, Value>当你不关心值的时候

如果Value是引用类型,则存储它将浪费4到8个字节,具体取决于进程是32位还是64位。如果Value是一个值类型,它可能会浪费更多。

如果不需要,可以将Value设置为Byte。即使使用空结构体,也不能低于1字节。您可以设置为任何值,可能0是一个不错的选择。

理想情况下,如果你只需要一个集合,你应该使用集合。

在。net 4.0+中有一个SortedSet<T>在内部使用树。事实上,SortedDictionary<TKey, TValue>在内部使用SortedSet<KeyValuePair<TKey, TValue>>

SortedList<TKey, TValue>的集合对应是List<T>,我猜。您只需要使用二分搜索并将值插入排序位置。实现ISet<T>应该很简单。

相关文章: