Tag: 哈希表

c#中的Baby-Step巨步算法。 哈希表内存不足

我试图使用哈希表来解决离散算法问题。 我正在使用Shanks baby步骤巨步算法。 我的哈希表包含大约11,000,000个键和值。 我不断收到内存exception。 有没有什么办法解决这一问题? 或者使用不同的数据结构? 我正在使用Visual C#Express 2010和.NET 4.0 Framework

如何在c#中序列化哈希表

我已经实现了会话状态模式sqlserver,当我运行我的应用程序时,我面临着哈希表的XML序列化错误。 我的class级看起来像: [Serializable] public class ProjectSetup{ private System.Collections.Hashtable _ConfigTable; //and other properties here public System.Collections.Hashtable ConfigTable { get { return _ConfigTable; } } } 现在我想知道如何序列化hastable,或者如果有其他选择请告诉我。 并且确切的错误是:“无法序列化System.Collections.Hashtable类型的成员ProjectSetup.ConfigTable,因为它实现了IDictionary”

C#应用程序如何为此实现字典或哈希表?

这是我的问题,我想写一个基本的控制台应用程序,我在其中输入日期作为输入,如果该日期尚未输入应用程序然后允许时间输入注释,即2013年7月7日时间5:00 – 晚上7点输入文字等等 然后应用程序将保持循环,如果我输入相同的日期,我不能输入与上面相同的时间,但我应该能够输入例如7:00到8。 我在考虑使用字典: Dictionary BookingDict = new Dictionary(); 并将日期添加为id,但似乎只能输入一个元素id 可以请一些人帮忙

使用Json.Net序列化哈希表

我有一个哈希表,其键的类型为整数,但是当使用json.net进行反序列化时,键会以字符串forms返回,有没有办法使用json.net序列化/反序列化将键类型保留在哈希表上? 此哈希表是“MyType”类型的属性 var settings = new JsonSerializerSettings(); settings.TypeNameHandling = TypeNameHandling.Objects; string json = JsonConvert.SerializeObject(o, Formatting.Indented, settings); mo = JsonConvert.DeserializeObject(json, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects }); public Hashtable jsonViews { get { return mViews; } set { mViews = value; } }

二进制搜索和哈希表搜索

我想找出一个字典查找和一个数组的二进制搜索查找之间的权衡点。 我期待着字典的恒定时间查找,以及二进制搜索的对数时间查找,具体取决于集合的大小,二进制搜索对于较小的集合表现更好。 但是,当我看到以下结果时,我感到很惊讶: 我很惊讶:1。二进制搜索首先以对数方式增长,然后增长得更快。 哈希起初非常一致,但随后开始慢慢增长。 3.二进制搜索永远不会比哈希查找更好。 以下是我的代码。 我做错了什么? class Program { static void Main(string[] args) { var r = new Random(); var targets = Enumerable.Range(0, 1000 * 1000).Select(_ => r.Next(int.MaxValue)).ToList(); for (int totalCount = 1; totalCount r.Next(int.MaxValue)).Distinct().Select(v => new thing(v)).OrderBy(t => t.value).ToArray(); var d = a.ToDictionary(t => t.value); var watch = new System.Diagnostics.Stopwatch(); { watch.Start(); […]

按(可能是非唯一的)值对Hashtable进行排序

我有一个将字符串映射到整数的Hashtable。 字符串是唯一的,但有几个可能映射到相同的整数。 我天真的方法是简单地将Hashtable反转为由Hashtable的值索引的SortedList,但问题是只要两个Hashtable的字符串映射到相同的值,就会发生冲突。 列出由值排序的整个Hashtable(键和值)的最有效方法是什么? (如果两个值相同,我不关心它们的排序。)

具有单个键的多个值的哈希表

我想在单个键中存储多个值,如: HashTable obj = new HashTable(); obj.Add(“1”, “test”); obj.Add(“1”, “Test1”); 现在这会引发错误。

对于C#中byte 类型的键,为什么Hashtable不会为“ContainsKey”返回true?

请考虑以下代码: byte[] bytes = new byte[] { 1, 2, 5, 0, 6 }; byte[] another = new byte[] { 1, 2, 5, 0, 6 }; Hashtable ht = new Hashtable(); ht.Add(bytes, “hi”); Assert.IsTrue(ht.ContainsKey(another)); 为什么这个断言失败了? 作为基本类型的数组不应该使用对象引用,是吗? 那么为什么它会返回假? 我可以做些什么来使这个哈希表工作吗?

为什么即使值相同,哈希表中的值比较也会返回false?

在下面的代码中,我试图检查两个字符串是否是字谜。 为此,我计算哈希表中两个字符串中的字符,方法是将唯一字符作为键存储,并将其作为值存储在字符串中。 最后,当我去检查每个字符是否具有相同的计数时,我得到一个错误的输出,看到代码中标记为“问题”的行。 但是当我将该行中的值转换为字符串时,代码工作正常。 我错过了什么? static bool AreAnagrams(string input1, string input2) { Hashtable uniqueChars1 = new Hashtable(); Hashtable uniqueChars2 = new Hashtable(); // Go through first string and create a hash table of characters AddToHashTable(input1, ref uniqueChars1); // Go through second string and create a second hash table of characters AddToHashTable(input2, ref uniqueChars2); // For […]

.net字典使用多少个哈希桶?

我知道这是一个实现细节,但我很好奇:.NET字典中使用的散列桶的数量是否有限制? 我假设它会在2 * numberOfElements附近 ,但是有没有人确切知道(或者它是否记录在任何地方)?