C#集合类(转)

晨曦之光 发布于 2012/05/16 17:15
阅读 107
收藏 0

Stack类
Stack类是一个后进先出的数据结构,此类定义了两个重要的方法为Push,Pop,Push方法用以将一个对象方法到stack的最顶端,而Pop方法则从stack里将最顶端的对象取出,并且将其删除,还有一个方法Peek(),此方法只是取得对象的值并不会删除对象的值。请看下面的范例
范例一
using System;
using System.Collections;
namespace ConsoleApplication1
{

class Class1
{

static void Main(string[] args)
{
            int a=20;
   int b=30;
   int c=40;
   int d=50;
   int e=60;
   int f=80;

   Stack stack=new Stack();
   Console.WriteLine("stack的初始容量为{0}",stack.Count);
   Console.WriteLine("使用方法push将对象加入stack:/n");
   Console.WriteLine("加入第一个数值-->{0}",a);
   stack.Push(a);
   Console.WriteLine("加入第二个数值-->{0}",b);
   stack.Push(b);
                        Console.WriteLine("加入第三个数值-->{0}",c);
   stack.Push(c);
   Console.WriteLine("加入第四个数值-->{0}",d);
   stack.Push(d);
   Console.WriteLine("加入第五个数值-->{0}",e);
   stack.Push(e);
   Console.WriteLine("加入第六个数值-->{0}",f);
   stack.Push(f);
   Console.WriteLine("加入数值后stack的容量为{0}",stack.Count);

   Console.WriteLine("下面使用Peek方法从stack中取得对象:");
   for(int i=0;i<stack.Count;i++){
      Console.WriteLine(stack.Peek());
   }
   Console.WriteLine("下面使用Pop方法取得stack中的元素:");
   for(int i=0;i<6;i++){
      Console.WriteLine(stack.Pop());
   }

}
}

}
运行结果
stack的初始容量为0
使用方法push将对象加入stack:

加入第一个数值-->20
加入第二个数值-->30
加入第三个数值-->40
加入第四个数值-->50
加入第五个数值-->60
加入第六个数值-->80
加入数值后stack的容量为6
下面使用Peek方法从stack中取得对象:
80
80
80
80
80
80
下面使用Pop方法取得stack中的元素:
80
60
50
40
30
20
Press any key to continue
从上面的结果中我们可以看到,peek方法取得是同一个值,这是因为,我们知道stack是一种后进先出的数据结构而Peek()方法只是单纯的将对象取出了而不对其进行删除,因此每次使用peek()方法时,还都是取出的一个相同的值80;

Queue类
Queue类正好与Stack类相反,Queue是一中先进先出的数据结构,此类也定义了两个方法用于想Queue中添加或取出元素的方法,第一种是Enqueue()方法用于将一个元素加入指定的Queue中,而Dequeue是从Queue中将元素取出,并且将其删除,和stack一样Queue中也有Peek()方法,此方法只是取得对象的值并不会删除对象的值。请看下面的范例
范例一
using System;
using System.Collections;
namespace ConsoleApplication1
{

class Class1
{

static void Main(string[] args)
{
            int a=20;
   int b=30;
   int c=40;
   int d=50;
   int e=60;
   int f=80;

   Queue stack=new Queue();
   Console.WriteLine("Queue的初始容量为{0}",stack.Count);
   Console.WriteLine("使用方法push将对象加入Queue:");
   Console.WriteLine("加入第一个数值-->{0}",a);
   stack.Enqueue(a);
   Console.WriteLine("加入第二个数值-->{0}",b);
   stack.Enqueue(b);
            Console.WriteLine("加入第三个数值-->{0}",c);
   stack.Enqueue(c);
   Console.WriteLine("加入第四个数值-->{0}",d);
   stack.Enqueue(d);
   Console.WriteLine("加入第五个数值-->{0}",e);
   stack.Enqueue(e);
   Console.WriteLine("加入第六个数值-->{0}",f);
   stack.Enqueue(f);
   Console.WriteLine("加入数值后Queue的容量为{0}",stack.Count);

   Console.WriteLine("下面使用Peek方法从Queue中取得对象:");
   for(int i=0;i<stack.Count;i++){
      Console.WriteLine(stack.Peek());
   }
   Console.WriteLine("下面使用Dequeue方法取得Queue中的元素:");
   for(int i=0;i<6;i++){
      Console.WriteLine(stack.Dequeue());
   }

}
}

}
运行结果
Queue的初始容量为0
使用方法push将对象加入Queue:
加入第一个数值-->20
加入第二个数值-->30
加入第三个数值-->40
加入第四个数值-->50
加入第五个数值-->60
加入第六个数值-->80
加入数值后Queue的容量为6
下面使用Peek方法从Queue中取得对象:
20
20
20
20
20
20
下面使用Dequeue方法取得Queue中的元素:
20
30
40
50
60
80
Press any key to continue


Hashtable类用法范例
范例一
using System;
using System.Collections;
namespace ConsoleApplication1
{

class Class1
{

static void Main(string[] args)
{
            Hashtable ht=new Hashtable();
   for(int i=0;i<10;i++){
       string key="key"+(i*10);
    string value="value"+(i*10);
    ht.Add(key,value);
   }
   Console.WriteLine("以下列出ht集合对象的所有Key值:");
   ICollection mykey=ht.Keys;
   foreach(string keystring in mykey){
       Console.WriteLine(keystring);
   }

   Console.WriteLine("以下列出ht集合对象的所有value值:");
   ICollection values=ht.Values;
   foreach(string svalue in values){
       Console.WriteLine(svalue+"/t");
   }
   Console.WriteLine();
         
   do{
       Console.WriteLine("请输入key值:");
    string myvalue=Console.ReadLine();
    if(myvalue=="b") break;
    Console.WriteLine("key:{0},value:{1}",myvalue,ht[myvalue]);
   }while(true);
}

}

}
运行结果
以下列出ht集合对象的所有Key值:
key20
key0
key60
key30
key40
key10
key90
key70
key80
key50
以下列出ht集合对象的所有value值:
value20
value0
value60
value30
value40
value10
value90
value70
value80
value50

请输入key值:
key50
key:key50,value:value50
请输入key值:
b
Press any key to continue

范例二:
using System;
using System.Collections;
namespace ConsoleApplication1
{

class Class1
{

static void Main(string[] args)
{
                        Hashtable ht=new Hashtable();
          ht.Add("Jim","20");
   ht.Add("Mary","22");
   ht.Add("Xiaohua","21");
          
   Console.WriteLine("以下输出ht的key值:");
   ICollection key=ht.Keys;
   foreach(string str in key){
       Console.Write(str+":"+ht[str]);
    Console.WriteLine();
   }
}

}

}
运行结果
以下输出ht的key值:
Jim:20
Xiaohua:21
Mary:22
Press any key to continue

字典枚举器(IDictionaryEnumerator)用法范例
范例一
using System;
using System.Collections;
namespace ConsoleApplication1
{

class Class1
{

static void Main(string[] args)
{
                        Hashtable ht=new Hashtable();
          ht.Add("Jim","20");
   ht.Add("Mary","22");
   ht.Add("Xiaohua","21");
          
   Console.WriteLine("以下输出ht的key值:");
   ICollection key=ht.Keys;
   foreach(string str in key){
       Console.Write(str+":"+ht[str]);
    Console.WriteLine();
   }
   Console.WriteLine("________________________________________");
   Console.WriteLine("以下使用字典枚举器输出ht的内容:");
   IDictionaryEnumerator ide=ht.GetEnumerator();
   while(ide.MoveNext()){
      Console.WriteLine("{0}:{1}",ide.Key,ide.Value);
   }
}

}

}
运行结果
以下输出ht的key值:
Jim:20
Xiaohua:21
Mary:22
______________________________________
以下使用字典枚举器输出ht的内容:
Jim:20
Xiaohua:21
Mary:22
Press any key to continue

SortedList用法范例
范例一
using System;
using System.Collections;
namespace ConsoleApplication1
{

class Class1
{

static void Main(string[] args)
{
                        SortedList ht=new SortedList();
          ht.Add("Jim","20");
   ht.Add("Mary","22");
   ht.Add("Xiaohua","21");
          
   Console.WriteLine("以下输出ht的key值:");
   ICollection key=ht.Keys;
   foreach(string str in key){
       Console.Write(str+":"+ht[str]);
    Console.WriteLine();
   }
   Console.WriteLine("________________________________________");
   Console.WriteLine("以下使用字典枚举器输出ht的内容:");
   IDictionaryEnumerator ide=ht.GetEnumerator();
   while(ide.MoveNext()){
      Console.WriteLine("{0}:{1}",ide.Key,ide.Value);
   }
}

}

}
运行结果与上述范例一样


原文链接:http://blog.csdn.net/maji9370/article/details/4293494
加载中
返回顶部
顶部