首先看微软的介绍:
HashSet<T>:HashSet<(Of <(T>)>) 类基于数学 set 的模型,可提供类似于访问 Dictionary<(Of <(TKey, TValue>)>) 或 Hashtable 集合的键的高性能 set 运算.
List:表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。
方法:
Add(T t):
HashSet集合中的对象是唯一的。在添加对象的时候使用对象的哈希值来判断在集合中是否已存在。存在则报错。
List<T>集合对添加的对象无要求。
Remove(object o):
HashSet 首先查找对象o 的哈希值在HashSet中的位置是否有相同的对象,找不到则返回false.找到后在调用两个对象的Equals做对比,相同则移除该位置的对象。HashSet不用遍历集合则能快速找出对象。
List<T> 从第一个元素开始遍历集合元素,调用每一个元素的Equals与o做对比,直到找到相同的对象。
Conatains(object o):
HashSet 与remove一样,通过o的哈希值来快速查找在o在集合中的位置,然后再通过Equals来判断相等。
List 使用遍历的方法查找相同的元素。
心得: