类 |
描述和用法 |
动态数组(ArrayList) |
它代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。 |
哈希表(Hashtable) |
它使用键来访问集合中的元素。当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目。 |
排序列表(SortedList) |
它可以使用键和索引来访问列表中的项。排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序。 |
堆栈(Stack) |
它代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。 |
队列(Queue) |
它代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。 |
点阵列(BitArray) |
它代表了一个使用值 1 和 0 来表示的二进制数组。当您需要存储位,但是事先不知道位数时,则使用点阵列。您可以使用整型索引从点阵列集合中访问各项,索引从零开始。 |
ArrayList
using System;
using System.Collections;
namespace CollectionApplication
{
class Program
{
static void Main(string[] args)
{
ArrayList al = new ArrayList();
Console.WriteLine("Adding some numbers:");
al.Add(45);
al.Add(78);
al.Add(33);
al.Add(56);
al.Add(12);
al.Add(23);
al.Add(9);
Console.WriteLine("Capacity: {0} ", al.Capacity);
Console.WriteLine("Count: {0}", al.Count);
Console.Write("Content: ");
foreach (int i in al)
{
Console.Write(i + " ");
}
Console.WriteLine();
Console.Write("Sorted Content: ");
al.Sort();
foreach (int i in al)
{
Console.Write(i + " ");
}
Console.WriteLine();
Console.ReadKey();
}
}
}
属性
属性 |
描述 |
Capacity |
获取或设置 ArrayList 可以包含的元素个数。 |
Count |
获取 ArrayList 中实际包含的元素个数。 |
IsFixedSize |
获取一个值,表示 ArrayList 是否具有固定大小。 |
IsReadOnly |
获取一个值,表示 ArrayList 是否只读。 |
IsSynchronized |
获取一个值,表示访问 ArrayList 是否同步(线程安全)。 |
Item[Int32] |
获取或设置指定索引处的元素。 |
SyncRoot |
获取一个对象用于同步访问 ArrayList。 |
方法
序号 |
方法名 & 描述 |
1 |
public virtual int Add( object value ); 在 ArrayList 的末尾添加一个对象。 |
2 |
public virtual void AddRange( ICollection c ); 在 ArrayList 的末尾添加 ICollection 的元素。 |
3 |
public virtual void Clear(); 从 ArrayList 中移除所有的元素。 |
4 |
public virtual bool Contains( object item ); 判断某个元素是否在 ArrayList 中。 |
5 |
public virtual ArrayList GetRange( int index, int count ); 返回一个 ArrayList,表示源 ArrayList 中元素的子集。 |
6 |
public virtual int IndexOf(object); 返回某个值在 ArrayList 中第一次出现的索引,索引从零开始。 |
7 |
public virtual void Insert( int index, object value ); 在 ArrayList 的指定索引处,插入一个元素。 |
8 |
public virtual void InsertRange( int index, ICollection c ); 在 ArrayList 的指定索引处,插入某个集合的元素。 |
9 |
public virtual void Remove( object obj ); 从 ArrayList 中移除第一次出现的指定对象。 |
10 |
public virtual void RemoveAt( int index ); 移除 ArrayList 的指定索引处的元素。 |
11 |
public virtual void RemoveRange( int index, int count ); 从 ArrayList 中移除某个范围的元素。 |
12 |
public virtual void Reverse(); 逆转 ArrayList 中元素的顺序。 |
13 |
public virtual void SetRange( int index, ICollection c ); 复制某个集合的元素到 ArrayList 中某个范围的元素上。 |
14 |
public virtual void Sort(); 对 ArrayList 中的元素进行排序。 |
15 |
public virtual void TrimToSize(); 设置容量为 ArrayList 中元素的实际个数。 |
Hashtable
using System;
using System.Collections;
namespace CollectionsApplication
{
class Program
{
static void Main(string[] args)
{
Hashtable ht = new Hashtable();
ht.Add("001", "Zara Ali");
ht.Add("002", "Abida Rehman");
ht.Add("003", "Joe Holzner");
ht.Add("004", "Mausam Benazir Nur");
ht.Add("005", "M. Amlan");
ht.Add("006", "M. Arif");
ht.Add("007", "Ritesh Saikia");
if (ht.ContainsValue("Nuha Ali"))
{
Console.WriteLine("This student name is already in the list");
}
else
{
ht.Add("008", "Nuha Ali");
}
// 获取键的集合
ICollection key = ht.Keys;
foreach (string k in key)
{
Console.WriteLine(k + ": " + ht[k]);
}
Console.ReadKey();
}
}
}
属性
属性 |
描述 |
Count |
获取 Hashtable 中包含的键值对个数。 |
IsFixedSize |
获取一个值,表示 Hashtable 是否具有固定大小。 |
IsReadOnly |
获取一个值,表示 Hashtable 是否只读。 |
Item |
获取或设置与指定的键相关的值。 |
Keys |
获取一个 ICollection,包含 Hashtable 中的键。 |
Values |
获取一个 ICollection,包含 Hashtable 中的值。 |
方法
序号 |
方法名 & 描述 |
1 |
public virtual void Add( object key, object value ); 向 Hashtable 添加一个带有指定的键和值的元素。 |
2 |
public virtual void Clear(); 从 Hashtable 中移除所有的元素。 |
3 |
public virtual bool ContainsKey( object key ); 判断 Hashtable 是否包含指定的键。 |
4 |
public virtual bool ContainsValue( object value ); 判断 Hashtable 是否包含指定的值。 |
5 |
public virtual void Remove( object key ); 从 Hashtable 中移除带有指定的键的元素。 |
SortedList
using System;
using System.Collections;
namespace CollectionsApplication
{
class Program
{
static void Main(string[] args)
{
SortedList sl = new SortedList();
sl.Add("001", "Zara Ali");
sl.Add("002", "Abida Rehman");
sl.Add("003", "Joe Holzner");
sl.Add("004", "Mausam Benazir Nur");
sl.Add("005", "M. Amlan");
sl.Add("006", "M. Arif");
sl.Add("007", "Ritesh Saikia");
if (sl.ContainsValue("Nuha Ali"))
{
Console.WriteLine("This student name is already in the list");
}
else
{
sl.Add("008", "Nuha Ali");
}
// 获取键的集合
ICollection key = sl.Keys;
foreach (string k in key)
{
Console.WriteLine(k + ": " + sl[k]);
}
}
}
}
属性
属性 |
描述 |
Capacity |
获取或设置 SortedList 的容量。 |
Count |
获取 SortedList 中的元素个数。 |
IsFixedSize |
获取一个值,表示 SortedList 是否具有固定大小。 |
IsReadOnly |
获取一个值,表示 SortedList 是否只读。 |
Item |
获取或设置与 SortedList 中指定的键相关的值。 |
Keys |
获取 SortedList 中的键。 |
Values |
获取 SortedList 中的值。 |
方法
序号 |
方法名 & 描述 |
1 |
public virtual void Add( object key, object value ); 向 SortedList 添加一个带有指定的键和值的元素。 |
2 |
public virtual void Clear(); 从 SortedList 中移除所有的元素。 |
3 |
public virtual bool ContainsKey( object key ); 判断 SortedList 是否包含指定的键。 |
4 |
public virtual bool ContainsValue( object value ); 判断 SortedList 是否包含指定的值。 |
5 |
public virtual object GetByIndex( int index ); 获取 SortedList 的指定索引处的值。 |
6 |
public virtual object GetKey( int index ); 获取 SortedList 的指定索引处的键。 |
7 |
public virtual IList GetKeyList(); 获取 SortedList 中的键。 |
8 |
public virtual IList GetValueList(); 获取 SortedList 中的值。 |
9 |
public virtual int IndexOfKey( object key ); 返回 SortedList 中的指定键的索引,索引从零开始。 |
10 |
public virtual int IndexOfValue( object value ); 返回 SortedList 中的指定值第一次出现的索引,索引从零开始。 |
11 |
public virtual void Remove( object key ); 从 SortedList 中移除带有指定的键的元素。 |
12 |
public virtual void RemoveAt( int index ); 移除 SortedList 的指定索引处的元素。 |
13 |
public virtual void TrimToSize(); 设置容量为 SortedList 中元素的实际个数。 |
Stack
using System;
using System.Collections;
namespace CollectionsApplication
{
class Program
{
static void Main(string[] args)
{
Stack st = new Stack();
st.Push('A');
st.Push('M');
st.Push('G');
st.Push('W');
Console.WriteLine("Current stack: ");
foreach (char c in st)
{
Console.Write(c + " ");
}
Console.WriteLine();
st.Push('V');
st.Push('H');
Console.WriteLine("The next poppable value in stack: {0}",
st.Peek());
Console.WriteLine("Current stack: ");
foreach (char c in st)
{
Console.Write(c + " ");
}
Console.WriteLine();
Console.WriteLine("Removing values ");
st.Pop();
st.Pop();
st.Pop();
Console.WriteLine("Current stack: ");
foreach (char c in st)
{
Console.Write(c + " ");
}
}
}
}
属性
属性 |
描述 |
Count |
获取 Stack 中包含的元素个数。 |
方法
序号 |
方法名 & 描述 |
1 |
public virtual void Clear(); 从 Stack 中移除所有的元素。 |
2 |
public virtual bool Contains( object obj ); 判断某个元素是否在 Stack 中。 |
3 |
public virtual object Peek(); 返回在 Stack 的顶部的对象,但不移除它。 |
4 |
public virtual object Pop(); 移除并返回在 Stack 的顶部的对象。 |
5 |
public virtual void Push( object obj ); 向 Stack 的顶部添加一个对象。 |
6 |
public virtual object[] ToArray(); 复制 Stack 到一个新的数组中。 |
Queue
using System;
using System.Collections;
namespace CollectionsApplication
{
class Program
{
static void Main(string[] args)
{
Queue q = new Queue();
q.Enqueue('A');
q.Enqueue('M');
q.Enqueue('G');
q.Enqueue('W');
Console.WriteLine("Current queue: ");
foreach (char c in q)
Console.Write(c + " ");
Console.WriteLine();
q.Enqueue('V');
q.Enqueue('H');
Console.WriteLine("Current queue: ");
foreach (char c in q)
Console.Write(c + " ");
Console.WriteLine();
Console.WriteLine("Removing some values ");
char ch = (char)q.Dequeue();
Console.WriteLine("The removed value: {0}", ch);
ch = (char)q.Dequeue();
Console.WriteLine("The removed value: {0}", ch);
Console.ReadKey();
}
}
}
属性
属性 |
描述 |
Count |
获取 Queue 中包含的元素个数。 |
方法
序号 |
方法名 & 描述 |
1 |
public virtual void Clear(); 从 Queue 中移除所有的元素。 |
2 |
public virtual bool Contains( object obj ); 判断某个元素是否在 Queue 中。 |
3 |
public virtual object Dequeue(); 移除并返回在 Queue 的开头的对象。 |
4 |
public virtual void Enqueue( object obj ); 向 Queue 的末尾添加一个对象。 |
5 |
public virtual object[] ToArray(); 复制 Queue 到一个新的数组中。 |
6 |
public virtual void TrimToSize(); 设置容量为 Queue 中元素的实际个数。 |