首页 > 代码库 > 【六】集合

【六】集合

【集合】常用的方法有ArrayList集合类、Queue集合类、Stack集合类、Hashtable集合类、SortedList集合类
集合类的元素类型是object,会有装箱和拆箱的过程
集合类位于System.Collections命名空间,所以需要加
using System.Collections;

ArrayList集合类用法示例如下:
using System;
using System.Collections;

ArrayList numbers new ArrayList();

//填充ArrayList,number就是循环变量
foreach(int number in int[12]={10,9,8,7,7,6,5,10,4,3,2,1})
{
numbers.Add(number);
}
//在列表倒数第二位的位置插入一个元素,最后一个元素自动下移一个位置
//Insert方法的第一个参数时要插入的位置,第二个元素是要插入的值
numbera.Insert(numbers.Count-1,99);

//移除值是7的第一个元素
numbers.Remove(7);

//移除当前的第7个元素
numbers.RemoveAt(6);
//for 循环遍历
for (int i = 0;i<numbers.Count;i++)
{
int number = (int)numbers[i];//注意要强制类型转换
Console.WriteLine(number);
}
//foreach循环遍历
foreach(int number in numbers)//不需要强制类型转换
{
Console.WriteLine(number);
}

Queue集合类numbers实现先入先出(first-in,first-out,FIFO)机制
Queue numbers = new Queue();
numbers.Enqueue(unmber);//把number加入到尾部,即入列
numbers.Dequeue();//这是队首的值,并删掉这个值,可以复制给其他变量
int number = (int)numbers.Dequeue();//复制的时候记得强制类型转换

Stack集合类numbers实现一个后入先出(list-in,first-out,LIFO)机制
Stack numbers = new Stack();
number.Push(number);//把number入栈,在顶部
int number = (int)number.Pop();//从顶部开始取出一个并删除该元素

Hashtable集合类,在其他语言中通常被称为关联数组。哈希表类提供了键值对的功能
key/valued对可以理解为数组或者ArrayList类型提供了用整数索引元素的功能
而哈希表是用一个不是int的其他类型来作为索引,比如string,double或者Time等
即形成了一个key对应一个value的键值对。
哈希表当然不能包含重复的key。
Hashtable ages = new Hashtable();

ages["John"] = 44;
ages["Li"] = 23;
ages["James"] = 17;

foreach(DictionaryEntry element in ages)
{
string name = (string)element.Key;
int age = (int)element.Value;
Console.WriteLine("Name: {0} , Age: {1}",name,age);
}


ps:
一些哈希表的用法
// 创建一个Hashtable实例
Hashtable ht=new Hashtable();

// 添加keyvalue键值对
ht.Add("A","1");
ht.Add("B","2");
ht.Add("C","3");
ht.Add("D","4");

// 遍历哈希表
foreach (DictionaryEntry de in ht)
{
Console.WriteLine("Key -- {0}; Value --{1}.", de.Key, de.Value);
}

// 哈希表排序
ArrayList akeys=new ArrayList(ht.Keys);
akeys.Sort();
foreach (string skey in akeys)
{
Console.WriteLine("{0, -15} {1, -15}", skey, ht[skey]);

}

// 判断哈希表是否包含特定键,其返回值为true或false
if (ht.Contains("A"))
Console.WriteLine(ht["A"]);

// 给对应的键赋值
ht["A"] ="你好";

// 移除一个keyvalue键值对
ht.Remove("C");

// 遍历哈希表
foreach (DictionaryEntry de in ht)
{
Console.WriteLine("Key -- {0}; Value --{1}.", de.Key, de.Value);
}

// 移除所有元素
ht.Clear();

// 此处将不会有任何输出
Console.WriteLine(ht["A"]);
Console.ReadKey();

SortedList集合类与Hashtable类非常的相似,区别在于就如同名字里这样,SortedList是排序好的。
在一个SortedList内部的键值对,都是按照key值排序好的。

集合初始化器
ArrayList number = new ArrayList(){10,9,8,7,6,5};
Hashtable age = new Hashtable(){{"John",44},{"Li",23},{"James",17}};
//这个写法相当于Add,可以用Add的可以用,但是Stack和Queue不可以

【六】集合