ArrayList类是System.Collections命名空间的类,类似于数组,有人称其为动态数组、其容量可以根据需要自动扩充,元素的索引也可以根据元素的数量重新分配,可以动态实现元素的添加,和删除等操作。
ArrayList类其实可以理解为Array的优化版本,该类既有数组的特征,又有几何的特性,提供了很多集合类,Array累没有的属相和方法
下面是ArrayList类的属性和方法
Count--返回ArrayList对象包含实际元素的个数
Capacity--指定ArrayList的容量,可以包含元素的个数,默认为16
Item--可以通过索引方式开访问元素
Add()--在数组末尾添加一个元素
AddRange() --在数组末尾增加一定范围内的元素
Insert() --插入一个元素
Remove() --删除一个元素
RemoveAt() --移除特定索引位子的元素
IndexOf() --返回某个元素的索引
Clear() --清楚所有元素
Contains() --检查给定元素是否在数组中
Count 和 Capacity的不同,前者是数量,后者是容量,容量是指最多可以存储多少个元素,数量是指真正存储了多少个元素。ArrayList的容量和数量都是可以变的,就像一个杯子容量为一升,表明最多可以存储一升的水,但不一定非得装满,装半杯也可以,那么半杯水就相当于Count,一升就相当于Capacity。
通过ArrayList的属性和方法可以看出,添加元素的方法有Add,Insert和AddRange
pubilce int Add(Object value);
value是添加元素,这些元素不论什么类型都会被转换成Object类型然后被保存,此方法返回值是整形,用于返回添加元素的索引,添加的元素讲插入到集合的末尾处
publice void Insert(int index,Object value);
该发夹指定插入元素的位置,参数index为插入元素的索引,value是插入的元素,该方法没有返回值,当index的值小于0或者大于属性值得时候会发生异常
pucilce vaid AddRange(Object [] value);
可以理解为添加一个Object类型的数组到ArrayList中
HashTable 称为哈希表,是System.Collections;累么一个重要的类,与ArrayList不同,哈希表可以存储键/值对的集合。如果把哈希表当做字典,那么键就是字典中的单词,值就是关于词的解释内容
在ArrayList集合中,可以使用索引访问元素,如果不能确切字典索引的值,访问就比较困难,HashTable 集合利用键/值来存储数据,在哈希表中,每个元素都一个键/值对,并且是一一相对的通过键就可以得到值如果存储电话号码,通常是姓名和电话号码在一起的,存储时吧姓名当做键,号码当做值通过姓名可以查到电话号码,这就是一个典型的存储方式
Count-- 哈希表中元素的个数
Keys-- 哈希表中所有键的集合
Values --哈希表中所有列的集合
Add()--像哈希表中添加一个元素,包括元素的建和值
Clear()--清除哈希表中所有的元素
Remove()--删除指定的元素
GerEnumerator() --返回IdictionaryEnumerator。可以遍历哈希表
接下来HashTable的使用方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace HashTabile使用实例___电话薄
{
public class TelNote
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string number;
public string Nunber
{
get { return number; }
set { number = value; }
}
}
public class TelNoteEdit
{
public Hashtable httels= new Hashtable();
public void Add(TelNote tel)
{
if (httels.Count == 0)
{
Hashtable ht = new Hashtable();
httels.Add(tel.Name, tel);
}
else
{
if (httels.Contains(tel.Nunber))
{
httels[tel.Name] = tel.Nunber;
}
else
{
httels.Add(tel.Name, tel);
}
}
}
public TelNote GetByName(string name)
{
foreach (object tel in httels.Values)
{
TelNote mytel=(TelNote)tel;
if (name == mytel.Name)
{
return mytel;
}
}
return null;
}
}
class Program
{
static void Main(string[] args)
{
TelNote myte11 = new TelNote();
myte11.Name = "张佳策";
myte11.Nunber = "123456789";
TelNote myte12 = new TelNote();
myte12.Name = "张俊峰";
myte12.Nunber = "123456789";
TelNoteEdit qwer = new TelNoteEdit();
qwer.Add(myte11);
qwer.Add(myte12);
Console.WriteLine("哈希表中元素的个数为{0}",qwer.httels.Count);
foreach (DictionaryEntry myte13 in qwer.httels)
{
Console.WriteLine("\t{0}\t{1}",myte13.Key,myte13.Value);
}
TelNote myte1 = qwer.GetByName("张俊峰");
Console.WriteLine("{0}的电话是{1}",myte1.Name,myte1.Nunber);
Console.ReadKey();
}
}
}
|