C#集

C#集

一、基本概念

集的概念在数学中早有提到。他指的是一组不重复数据的集合。C#中的集有两种:
1、有序集SortedSet<T> ,自动排列顺序
2、无序集HashSet<T> ,无序

集主要被设计用来存储集合,做高性能集运算,例如两个集合求交集、并集、差集等。

二、有序集和无序集

有序集和无序集的使用如下面的例子。

static void Main(string[] args)
{
    //创建无需集HashSet,不能有重复否则会合并
    var myHashSet = new HashSet<int>() {1,2,1,4,1,6 };  
    var myHashSet1 = new HashSet<int>() {1,2,4 };
    var myHashSet2 = new HashSet<int>() { 4,5,6,7};

    //创建有序集SortedSet,不能有重复,否则会合并
    var mySortedSet = new SortedSet<int>() {7,8,9,4,1,6 };
    var mySortedSet1 = new SortedSet<int>() { 4, 7, 8 };

    //添加元素
    Console.WriteLine("添加元素1"+myHashSet.Add(1));     //如果添加的元素存在的话,忽略
    Console.WriteLine("添加元素1"+mySortedSet.Add(1));   //如果添加的元素存在的话,忽略

    //枚举HashSet的值
    Console.WriteLine("myHashSet的元素个数为"+myHashSet.Count); //输出4
    foreach (int i in myHashSet)  //输出1246
    {
        Console.Write(" "+i);
    }
    Console.WriteLine();

    //枚举SortedSet的值
    Console.WriteLine("mySortedSet的元素个数为" + mySortedSet.Count); //输出6
    foreach (int i in mySortedSet)  //输出146789
    {
        Console.Write(" " + i);
    }
    Console.WriteLine();

    //判断集是否为子集
    Console.WriteLine("myHashSet1是myHashSet的子集?"+myHashSet1.IsSubsetOf(myHashSet)); //返回true
    Console.WriteLine("myHashSet1是mySortedSet的子集?" + myHashSet1.IsSubsetOf(mySortedSet)); //返回false

    //判断集是否为超集
    Console.WriteLine("myHashSet是myHashSet1的超集?" + myHashSet.IsSupersetOf(myHashSet1)); //true
    Console.WriteLine("myHashSet是mySortedSet1的超集?" + myHashSet.IsSupersetOf(mySortedSet1));//false

    //判断是否有交集
    Console.WriteLine("myHashSet1与myHashSet2有交集?"+myHashSet1.Overlaps(myHashSet2)); //true

    //并集
    var myHashSet3 = new HashSet<int>(myHashSet1);
    myHashSet3.UnionWith(myHashSet2);
    foreach (int i in myHashSet3)   //将集并入,等同于并集处理,输出124567
    {
        Console.Write(" " + i);
    }
    Console.WriteLine();
    
    //将子集删除
    myHashSet3.ExceptWith(myHashSet1);//删除子集
    foreach (int i in myHashSet3)   //输出567
    {
        Console.Write(" " + i);
    }
    Console.WriteLine();
    Console.ReadKey();
}
发布了50 篇原创文章 · 获赞 0 · 访问量 856

猜你喜欢

转载自blog.csdn.net/weixin_40786497/article/details/104162017
今日推荐