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();
}