fengcarl

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

***数组和集合类的区别***

1、数组能容纳值类型,集合类则将它们的元素作为对象类型来接受。所以数组要声明容纳元素的类型,集合则不声明

2、数组具有固定大小,不能增大或缩小,集合则是动态的

3、数组可以是多维的,集合则是线性的,但是可以用集合中存储集合来模拟多维数组。

*********************

1.ArrayList

适合打散存储一个数组中的元素,比数组更加适合于增加删除元素

Remove(numbers)方法 :移除值为numbers的一个元素

RemoveAt(numbers)方法:移除索引为第numbers的元素

Add方法:ArrayList末尾增加一个元素

Insert(param1,param2)方法:ArrayList中间增加一个元素 param1插入的位置,param2插入的值

ArrayList.count 计算该集合的长度

eg1.

View Code
 1 using System;
 2 using System.Collections;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace StepByStep1
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             ArrayList numbers = new ArrayList();
13             foreach (int number in new int[12] { 10, 9, 8, 7,7,6, 5,10,4, 3, 2, 1 })
14             {
15                 numbers.Add(number); //Add number in the last place
16             }
17             numbers.Insert(numbers.Count - 1, 99);
18             numbers.Remove(7);
19             numbers.RemoveAt(6);
20             for (int i = 0; i < numbers.Count; i++)
21             {
22                 int number = (int)numbers[i];
23                 Console.WriteLine(number);    //使用for语句遍历时 要注意强制类型转换,numbers数组中的值类型为对象
24             }
25             foreach (int number in numbers)
26             {
27                 Console.WriteLine(number);  //使用foreach语句遍历时,不需要强制类型转换
28             }
29             Console.ReadKey();
30         }
31     }
32 }

2.Queue

队列集合类,顾名思义,是一个FIFO机制的集合类

有Enqueue 入队列和Dequeue 出队列两种方法。入队在队尾进行操作,出队在队头进行操作

3.Stack

栈集合类,是LIFO,后进先出的集合类

有Push和Pop两种方法使用

4.Hashtable

哈希表,关联数组,可以通过特定的key来存取数据

eg2.

View Code
 1 using System;
 2 using System.Collections;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace StepByStep1
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             Hashtable ages = new Hashtable();
13             ages["John"] = 44;
14             ages["Diana"] = 45;
15             ages["James"] = 17;
16             ages["Maria"] = 26;
17             foreach (DictionaryEntry element in ages)
18             {
19                 string name = (string)element.Key;
20                 int age = (int)element.Value;
21                 Console.WriteLine("Name:{0},Age:{1}", name, age);
22             }
23             Console.ReadKey();
24         }
25     }
26 }

foreach时 要建立一个DictionaryEntry来存储Hashtable中的值。注意foreach中element中的key和value需要强制类型转换才能赋值给普通的值类型

5.SortedList

与Hashtable差不多,只是会按照key值进行排序

6.使用集合初始化器

ArrayList可以如下进行初始化

ArrayList numbers = new ArrayList(){10,9,8,7,6,5,4,3,2,1}; //只有支持Add方法的集合,才可以使用这个写法

HashTable可以如下进行初始化

HashTable ages = new HashTable(){{"John",44},{"Diana",45},{"James",17},{"Maria",26}};

posted on 2013-04-16 20:54  fengcarl  阅读(216)  评论(0编辑  收藏  举报