HashSet<T>类


HashSet类主要是设计用来做高性能集运算的,例如对两个集合求交集、并集、差集等。集合中包含一组不重复出现且无特性顺序的元素。

HashSet的一些特性如下:

1、HashSet中的值不能重复且没有顺序。

2、HashSet的容量会按需自动添加。

构造方法:

HashSet() 默认相等比较器创建一个空的新实例。

HashSet(IEnumerable collection)  把指定集合中的collection中的数据复制到集中

HashSet(IEqualityComparer comparer)  使用指定的相等比较器创建一个空的新实例

HashSet(IEnumerable collection,IEqualityComparer comparer)  使用指定的比较器实例化数据,且将指定集合中的元素复制到集合中。

因为HashSet是专门设计来做集合运算的,因此它提供的方法中有不少是和集合运算相关的。

以下给出它的一些常用方法介绍

成员        类型        说明

Add        方法        将指定的元素添加到集合中

Clear        方法         清空集合中的所有元素

Contains        方法         确定某元素是否在HashSet

Exists        方法         确定HashSet是否包含于指定条件相匹配的元素

ExceptWith    方法         从当前HashSet移除指定集合中的所有元素

IntersectWith     方法        修改当前的HashSet对象,以仅包含该对象和指定集合中存在的元素

IsProperSubsetOf  方法        确定HashSet对象是否为指定集合的真子集

IsProperSupersetOf 方法        确定HashSet对象是否为指定集合的真超集

IsSunsetOf     方法         确定HashSet对象是否为指定集合的子集

IsSupersetOf    方法         确定HashSet对象是否为指定集合的超集

Remove      方法         从HashSet对象中移除指定的元素

RemoveWhere    方法         从HashSet集合中移除与指定谓词所定义的条件相匹配的所有元素

SetEquals     方法         确定HashSet对象与指定的集合中是否包含相同的元素

SynmmetricExceptWith  方法     修改当前的HashSet对象,以仅包含该对象或指定集合中存在的元素

TrimExcess    方法         将HashSet对象的容量设置为它所包含的元素的实际个数,向上舍入为接近的特性与实现的值。

UnionWith     方法         修改当前的HashSet对象,以包含该对象本身和指定集合中存在的所有元素

 给个简单的例子,写不完的,总之记得HashSet主要的作用是用来进行,交集、并集等运算的就OK了。

        static void Main(string[] args)
        {
            HashSet<string> hs = new HashSet<string>();
            hs.Add("");
            hs.Add("");
            hs.Add("");
            HashSet<string> hs1 = new HashSet<string>();
            hs1.Add("");
            hs1.Add("");

            bool b = hs1.IsProperSubsetOf(hs);  //确定hs1是否是hs的真子集
            Console.WriteLine(b);       //输出True


            HashSet<string> hs2 = new HashSet<string>();
            hs2.Add("爱你");
            IEnumerable<string> list = hs.Union(hs2);   //返回并集
            foreach (string str in list)
            {
                Console.WriteLine(str);     //输出 你 好 吗 爱你
            }

            Console.ReadKey();
        }

输出: