class Program
{
static void Main(string[] args)
{
HashSet<string> hash=new HashSet<string> ();
//url列表
StreamReader reader = new StreamReader( "AccessURL.txt", true);
string url = "";
List<string> list = new List<string>();
while (!reader.EndOfStream)
{
url = reader.ReadLine();
list.Add(url);
}
reader.Close();
Dictionary<string,bool> dic=new Dictionary<string,bool> ();
DateTime time1 = DateTime.Now;
foreach(string s in list)
{
hash.Add(s);
}
DateTime time2 = DateTime.Now;
TimeSpan t = new TimeSpan(time2.Ticks - time1.Ticks);
Console.WriteLine("hash add: " + t.Ticks.ToString());
time1 = DateTime.Now;
foreach(string s in list)
{
dic.Add(s,true);
}
time2 = DateTime.Now;
t = new TimeSpan(time2.Ticks - time1.Ticks);
Console.WriteLine("dicadd: "+t.Ticks.ToString());
time1 = DateTime.Now;
foreach (string s in list)
{
hash.Contains(s);
}
time2 = DateTime.Now;
t = new TimeSpan(time2.Ticks - time1.Ticks);
Console.WriteLine("hashfind: " + t.Ticks.ToString());
time1 = DateTime.Now;
foreach (string s in list)
{
dic.ContainsKey(s);
}
time2 = DateTime.Now;
t = new TimeSpan(time2.Ticks - time1.Ticks);
Console.WriteLine("dic find: " + t.Ticks.ToString());
Console.ReadLine();
}
}
运行结果:
hash add: 625000
dicadd: 156250
hashfind: 468750
dic find: 156250
(1)Dictionary适合数据非常有层次性的东西。特别是具有目录结构的东西。Dictionary本身的含义就是词典嘛。
(2)保存URL的时候,应该Dictionary比hashSet快。
保存大量的md5码的时候,Dictionary比hashSet快。
分享到:
相关推荐
C# ArrayList、HashSet、HashTable、List、Dictionary的区别详解 C# 中有多种集合类,每种集合类都有其特点和应用场景。了解这些集合类的区别可以帮助开发者选择合适的集合类来提高程序的性能和可读性。本文将介绍 ...
* 如果key是整数型,Dictionary的效率比Hashtable快 * 如果key是字符串型,Dictionary的效率没有Hashtable快 HashTable、HashSet和Dictionary都是常用的集合类,但是它们之间有着很大的区别。在选择哪种集合类时,...
在.NET框架中,C#语言提供了丰富的数据结构和容器,其中最常用且强大的就是List、Dictionary和HashSet等泛型集合。这些集合类是基于泛型的,能够提供类型安全的数据存储,大大增强了代码的可读性和效率。接下来,...
如果要实现去重,我们可以创建一个HashSet,HashSet会自动去除重复元素,然后遍历原始Dictionary的Values,将它们添加到HashSet中: ```csharp HashSet<string> set = new HashSet(); foreach (string value in ...
需要注意的是,这种方法只适用于值的比较,如果需要基于键和值都进行去重,那么需要同时重写键的 `Equals` 和 `GetHashCode` 方法,或者使用不同的数据结构如 `HashSet, TValue>>`。此外,虽然这种方法简单有效,但...
SortedList TKey,TValue>支持通过键或索引访问元素,而SortedDictionary,TValue>的内部实现为红黑树,提供了更快的查找和删除速度,但不支持通过索引访问。 ListDictionary和LinkedList是基于链表实现的集合。List...
在ASP.NET中,`Dictionary, TValue>`是泛型集合类,用于存储键值对数据。它提供了高效且灵活的方式来管理和检索...同时,开发者还可以根据需要选择其他泛型集合类,如`List<T>`、`HashSet<T>`等,以满足不同的需求。
1. 哈希表法:这是最常见的解法,利用C#中的Dictionary或HashSet来存储数组元素及其索引。遍历数组,对于每个元素,我们检查哈希表中是否存在目标值减去当前元素的值,如果存在,则找到了答案;若不存在,我们将当前...
Remember, class Dictionary is a type of HashSet, so use the inherited methods accordingly. 3. Next, complete the hash function encapsulated in class hash_function in dictionary.h. 4. Then, finish ...
Remember, class Dictionary is a type of HashSet, so use the inherited methods accordingly. 3. Next, complete the hash function encapsulated in class hash_function in dictionary.h. 4. Then, finish ...
Java集合框架是另一个重要的面试主题,包括List、Set、Map接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。理解它们的特点和应用场景,以及如何优化其性能,都是展示专业素养的关键。 多线程和并发...
当对象的哈希值在程序运行过程中改变时,可能导致`Dictionary`或`HashSet`出现问题。因此,如果对象的哈希码依赖于可变状态,务必在对象不变时保持哈希码不变。 8. **线程安全** C#中的`Dictionary`和`HashSet`在...
3. HashSetDictionary类:HashSetDictionary是HashSet和Dictionary的组合,它提供了一个集合,其中每个元素都是唯一的,并且可以通过键进行访问。这种集合适用于需要快速插入、删除和查找元素的场景,同时保证元素...
本文将深入探讨C#集合的相关知识点,主要包括数组与集合的区别以及六种常用的集合类型:ArrayList、Stack、Queue、LinkedList、Dictionary和HashSet。 首先,我们来看数组与集合的主要区别: 1. **固定大小与可变...
`HashMap`继承自`AbstractMap`,而`Hashtable`则继承自早期的`Dictionary`类。两者都是通过哈希表实现的,但是它们在多线程环境下的表现不同。`Hashtable`的所有方法都是同步的,因此在多线程环境下直接使用它是安全...
在给定的标题和描述中,提到了几种关键的数据结构:HashSet、HashMap、Heap(堆)以及Red-Black Tree(红黑树)。下面将对这些数据结构及其在C++中的实现进行详细解释。 1. **HashSet**: HashSet是基于哈希表实现...
集合在.NET Framework中主要由System.Collections命名空间提供,包括ArrayList、LinkedList、HashSet、Dictionary等。这些集合类各有特点,适用于不同的数据管理和操作需求。 1. ArrayList:这是.NET中最基本的动态...
一种常见方法是使用HashSet或Dictionary对象来存储已生成的随机数,确保每次生成的新数字不会与之前生成的数字重复。以下是一个简单的实现示例: ```vbnet Imports System.Collections.Generic Imports System....