C#常用集合总

1)首先我们来说一下集合定义吧!我个人认为经常回顾一下知识点还是挺好的。集合是一组组合在一起的类似的类型化对象。所以我们在选择集合类时要小心了,因为每一个集合都有其自身的功能,因此每一个集合也具有自身的限制。集合的专业性越强,其限制也就越多。

(2)ArrayList:使用大小可以按照动态需要增加的数组实现。ArrayList集合具有装箱和拆箱的操作,ArrayList传递的是值。

代码如下:

ArrayList al = new ArrayList();//无参构造函数

//ArrayList al = new ArrayList(3)定义了长度的构造函数

//ArrayList al = new ArrayList(new int{1,2,3})实现了ICollection接口

al.Add(1);//装箱

al.Add(2);

al.Add(3);

for (int i = 0; i < al.Count; i++)

{

Console.WriteLine(al[i]);

Console.WriteLine(al[i].GetType().Name);

}

Console.WriteLine("-----------");

foreach (object k in al)//拆箱,必须声明为object类型。

{

Console.WriteLine(k);

}

Console.WriteLine("-----------");

名称
说明

Capacity
获取或设置 ArrayList 可包含的元素数。

Count
获取 ArrayList 中实际包含的元素数。

IsFixedSize
获取一个值,该值指示 ArrayList 是否具有固定大小。

IsReadOnly
获取一个值,该值指示 ArrayList 是否为只读。

Item
获取或设置指定索引处的元素。

Add
将对象添加到 ArrayList 的结尾处。

AddRange
将 ICollection 的元素添加到 ArrayList 的末尾。

BinarySearch
使用对分检索算法在已排序的 ArrayList 或它的一部分中查找特定元素。

Clear
从 ArrayList 中移除所有元素。

Contains
确定某元素是否在 ArrayList 中。

CopyTo
将 ArrayList 或它的一部分复制到一维数组中。

Equals
确定两个 Object 实例是否相等。

FixedSize
返回具有固定大小的列表包装,其中的元素允许修改,但不允许添加或移除。

GetEnumerator
返回循环访问 ArrayList 的枚举数。

GetRange
返回 ArrayList,它表示源 ArrayList 中元素的子集。

GetType
获取当前实例的 Type。

IndexOf
返回 ArrayList 或它的一部分中某个值的第一个匹配项的从零开始的索引。

Insert
将元素插入 ArrayList 的指定索引处。

InsertRange
将集合中的某个元素插入 ArrayList 的指定索引处。

LastIndexOf
返回 ArrayList 或它的一部分中某个值的最后一个匹配项的从零开始的索引。

Remove
从 ArrayList 中移除特定对象的第一个匹配项。

RemoveAt
移除 ArrayList 的指定索引处的元素。

RemoveRange
从 A
rrayList 中移除一定范围的元素。

Repeat
返回 ArrayList,它的元素是指定值的副本。

Reverse
将 ArrayL

ist 或它的一部分中元素的顺序反转。

SetRange
将集合中的元素复制到 ArrayList 中一定范围的元素上。

Sort
对 ArrayList 或它的一部分中的元素进行排序。

Synchronized
返回同步的(线程安全)列表包装。

ToArray
将 ArrayList 的元素复制到新数组中。

TrimToSize
将容量设置为 ArrayList 中元素的实际数目。
(3)Stack:表示对象的先进后出的集合。

代码如下:

Stack stack = new Stack();

stack.Push(1);

stack.Push("aaa");

stack.Push(1.11);



foreach (object i in stack)//foreach只是查看元素并没有真正移除元素

{

Console.WriteLine(i);

}

Console.WriteLine("------------");

Console.WriteLine(stack.Peek());//Peek只是查看顶端的元素并没有移除元素

Console.WriteLine("------------");

Console.WriteLine(stack.Pop());//移除了顶端的元素。

Stack<int> st = new Stack<int>();//堆栈泛型。和List<>用法一样。



名称
说明

Clear
从 Stack 中移除所有对象。

Clone
创建 Stack 的浅表副本。

Contains
确定某元素是否在 Stack 中。

CopyTo
从指定数组索引开始将 Stack 复制到现有一维 Array 中。

GetEnumerator
返回 Stack 的 IEnumerator。

MemberwiseClone
创建当前 Object 的浅表副本。

Peek
返回位于 Stack 顶部的对象但不将其移除。

Pop
移除并返回位于 Stack 顶部的对象。

Push
将对象插入 Stack 的顶部。

Synchronized
返回 Stack 的同步(线程安全)包装。

ToArray
将 Stack 复制到新数组中。

Count
获取 Stack 中包含的元素数。

IsSynchronized
获取一个值,该值指示是否同步对 Stack 的访问(线程安全)。

SyncRoot
获取可用于同步 Stack 访问的对象。


(4)Queue:表示对象的先进先出的集合

代码如下:

Queue q = new Queue();//先进先出

q.Enqueue(1);

q.Enqueue("2");

q.Enqueue(5);

foreach(object i in q)

{

Console.WriteLine(i);

}

Console.WriteLine("----------");

Console.WriteLine(q.Dequeue());

Console.WriteLine("----------");

Queue<string> qu = new Queue<string>();

qu.Enqueue("wzk");

qu.Enqueue("zcy");

foreach (string j in qu)

{

Console.WriteLine(j);

}

Console.WriteLine("----------");



名称
说明

Clear
从 Queue 中移除所有对
象。

Clone
创建 Queue 的浅表副本。

Contains
确定某元素是否在 Queue 中。

CopyTo
从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。

Dequeue
移除并返回位于 Queue 开始处的对象。

Enqueue
将对象添加到 Queue 的结尾处。

GetEnumerator
返回循环访问 Queue 的枚举数。

GetType

获取当前实例的 Type。

MemberwiseClone
创建当前 Object 的浅表副本。

Peek
返回位于 Queue 开始处的对象但不将其移除。

Synchronized
返回同步的(线程安全)Queue 包装。

ToArray
将 Queue 元素复制到新数组。

ToString
返回表示当前 Object 的 String。

TrimToSize
将容量设置为 Queue 中元素的实际数目。

Count
获取 Queue 中包含的元素数。

IsSynchronized
获取一个值,该值指示是否同步对 Queue 的访问(线程安全)。

SyncRoot
获取可用于同步 Queue 访问的对象。
(5)Hashtable:表示键/值的集合,这些键/值对根据键的哈希代码进行组织。

代码如下:

Hashtable ht = new Hashtable();

ht.Add(0,"张三");

ht.Add(1,"李四");

ht.Add(2,"王五");

//值的 foreach (var v in ht.Values) { Console.WriteLine(v); }

//键 foreach (var k in ht.Keys) { Console.WriteLine(k); }

说明:只要键对象用作Hashtable中的键,它们就必须是不变的。当把某个元素添加到Hashtable中时,将会根据键的哈希代码将元素存放到一块存储区中。此键的后续查找将使用键的哈希代码只是一个特定存储区中搜索,这就会大大减少为查找某一个元素所需要键比较的次数。Hashtable的容量是Hashtable可拥有的元素数,随着我们向Hashtable中添加元素,容量就会通过重新分配按照需要进行自动增加。

名称 说明

Add 将带有指定键和值的元素添加到 Hashtable 中。

Clear 从 Hashtable 中移除所有元素。

Clone 创建 Hashtable 的浅表副本。

Contains 确定 Hashtable 是否包含特定键。

ContainsKey 确定 Hashtable 是否包含特定键。

ContainsValue 确定 Hashtable 是否包含特定值。

CopyTo 将 Hashtable 元素复制到一维 Array 实例中的指定索引位置。

GetEnumerator 返回循环访问 Hashtable 的 IDictionaryEnumerator。

GetHash 返回指定键的哈希代码。

GetObjectData 实现 ISerializable 接口,并返回序列化 Hashtable 所需的数据。

KeyEquals 将特定 Object 与 Hashtable 中的特定键进行比较。

MemberwiseClone 创建当前 Object 的浅表副本。

OnDeserialization 实现 ISerializable 接口,并在完成反序列化之后引发反序列化事件。

Remove 从 Hashtable 中移除带有指定键的元素。

Synchronized 返回 Hashtable 的同步(线程安全)包装。

ToString 返回表示当前 Object 的 String。 Com
parer(已过时) 获取或设置要用于 Hashtable 的 IComparer。

Count 获取包含在 Hashtable 中的键/值对的数目。

EqualityComparer 获取要用于 Hashtable 的 IEqualityComparer。

Hcp(已过时) 获取或设置可分配哈希代码的对象。

IsFixedSize 获取一个值,该值指示 Hashtable 是否具有固

定大小。

IsReadOnly 获取一个值,该值指示 Hashtable 是否为只读。

IsSynchronized 获取一个值,该值指示是否同步对 Hashtable 的访问(线程安全)。

Item 获取或设置与指定的键相关联的值。

Keys 获取包含 Hashtable 中的键的 ICollection。

SyncRoot 获取可用于同步 Hashtable 访问的对象。

Values 获取包含 Hashtable 中的值的 ICollection。



(6)List:表示可通过索引访问的对象的强类型列表。 List 类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList 泛型接口。 T是一个类型参数,标明列表中元素的准确类型,而不是ArrayList中的object中的类型。类型可以是值类型也可以是引用类型。

代码如下:

List li = new List();//泛型就避免了装箱和拆箱的操作。

li.Add(1); li.Add(2); li.Add(3);

for (int j = 0; j < li.Count; j++) { Console.WriteLine(li[j]); }

Console.WriteLine("-----------");

foreach (int k in li) { Console.WriteLine(k); }

名称 说明

Aggregate 对序列应用累加器函数。

All 确定序列中的所有元素是否满足条件。

AsEnumerable 返回类型为 IEnumerable 的输入。

Cast 将 IEnumerable 的元素转换为指定的类型。

Concat 连接两个序列。

ElementAt 返回序列中指定索引处的元素。

ElementAtOrDefault 返回序列中指定索引处的元素;如果索引超出范围,则返回默认值。

OfType 根据指定类型筛选 IEnumerable 的元素。

Reverse 反转序列中元素的顺序。

Skip 跳过序列中指定数量的元素,然后返回剩余的元素。

Take 从序列的开头返回指定数量的连续元素。

ToArray 从 IEnumerable 创建一个数组。

ToList 从 IEnumerable 创建一个 List。

Capacity 获取或设置该内部数据结构在不调整大小的情况下能够容纳的元素总数。

Count 获取 List中实际包含的元素数。

Item 获取或设置指定索引处的元素。



相关文档
最新文档