1、集合:是一组组合在一起的类型的类型化对象。
集合的几个方法应用:
(1)追加用.Add获取
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.Add(1);
al.Add(2);
al.Add(3);
foreach (object i in al)
{
Console.WriteLine(i);
}
}
结果:1
2
3
(2)Remove移除元素
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.Add(1);
al.Add(2);
al.Add(3);
al.Remove(3);
foreach (object i in al)
{
Console.WriteLine(i);
}
}
结果:1
2
(3)RemoveAt移除下标对应的元素
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.Add(1);
al.Add(2);
al.Add(3);
al.RemoveAt(1);
foreach (object i in al)
{
Console.WriteLine(i);
}
}
结果:1
3
(4)Count共有多少个元素
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.Add(1);
al.Add(2);
al.Add(3);
Console.WriteLine("共有{0}个元素", al.Count);
foreach (object i in al)
{
Console.WriteLine(i);
}
}
结果:共有3个元素
1
2
3
(5)Capacity容量,如果开始设置容量就按设置的容量翻倍
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.Add(1);
al.Add(2);
al.Add(3);
Console.WriteLine("容量为:{0}",al.Capacity);
foreach (object i in al)
{
Console.WriteLine(i);
}
}
结果:容量为4
1
2
3
(6)可以通过下标改变元素的值
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.Add(1);
al.Add(2);
al.Add(3);
al[2] = 5;
foreach (object i in al)
{
Console.WriteLine(i);
}
}
结果:1
2
5
2、泛型:表示可通过索引访问的对象的强类型列表。
例:List<Product> list = new List<Product>();
Product pro1 = new Product();
pro1.Name = "绿茶";
pro1.Price = 2.5;
pro1.Count = 10;
Product pro2 = new Product();
pro2.Name = "红茶";
pro2.Price = 2.5;
pro2.Count = 10;
Product pro3 = new Product();
pro3.Name = "果粒橙";
pro3.Price = 3000000.00;
pro3.Count = 10;
list.Add(pro1);
list.Add(pro2);
list.Add(pro3);
int i = 1;
foreach (Product pro in list)
{
Console.WriteLine("{0,-2}品名:{1,-" + (10 - Encoding.Unicode.GetByteCount(pro.Name) / 2) + "}价格:{2:c} 数量:{3}", i++, pro.Name, pro.Price, pro.Count);
}
3、堆:表示对象的先进后出的集合。
Stack stack = new Stack();
stack.Push(1);//添加元素
stack.Push(2);
stack.Push(3);
stack.Push(4);
Console.WriteLine(stack.Peek());//只看不取
Console.WriteLine(stack.Pop());//即看又取
foreach (object o in stack)//遍历全部元素
{
Console.WriteLine(o);
}
4、队列:表示对象的先进先出的集合。
Queue que = new Queue();
que.Enqueue("a");//添加元素
que.Enqueue("b");
que.Enqueue("c");
que.Enqueue("d");
Console.WriteLine(que.Dequeue());//即看又取
Console.WriteLine(que.Peek());//只看不取
Console.WriteLine("----------------------");
foreach (object o in que)//遍历全部元素
{
Console.WriteLine(o);
}
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 时,将根据键的哈希代码将该元素放入一块存储区中。该键的后续查找将使用键的哈希代码只在一个特定存储区中搜索,这将大大减少为查找一个元素所需的键比较的次数。