我正在为我正在进行的项目构建一个符号表.我想知道人们对可用于存储和创建符号表的各种方法的优点和缺点的看法.
我做了很多搜索,最常推荐的是二叉树或链表或哈希表.以上所有优点和缺点是什么?(在c ++中工作)
当给定一组静态对象(在某种意义上是静态的,一旦加载它很少会发生变化),需要重复的并发查找以及最佳性能,哪个更好,一个HashMap或一个二进制搜索使用一些自定义比较器的数组?
答案是对象或结构类型的函数吗?哈希和/或平等功能表现?哈希的独特性?清单大小? Hashset尺寸/尺寸?
我正在看的集合的大小可以是500k到10m之间的任何地方 - 这些信息很有用.
虽然我正在寻找一个C#答案,但我认为真正的数学答案不在于语言,所以我不包括那个标签.但是,如果需要注意C#特定的事情,那么需要该信息.
如果我存储了一堆字符串值并且我希望能够在O(1)之后找到它们,我经常做的事情是:
foreach (String value in someStringCollection)
{
someDictionary.Add(value, String.Empty);
}
Run Code Online (Sandbox Code Playgroud)
这样,我可以在以后轻松地对这些字符串值执行常量时间查找,例如:
if (someDictionary.containsKey(someKey))
{
// etc
}
Run Code Online (Sandbox Code Playgroud)
但是,我觉得我在制作值String.Empty时作弊.我应该使用更合适的.NET Collection吗?
algorithm ×2
.net ×1
binary-tree ×1
c# ×1
collections ×1
hash ×1
hashmap ×1
hashtable ×1
linked-list ×1
lookup ×1
optimization ×1
string ×1