黑马程序员_ArrayList类和Hashtable类的复习

------- <a href="http://www.itheima.com" target="blank">Windows Phone 7手机开发</a>、<a href="http://www.itheima.com" target="blank">.Net培训</a>、期待与您交流! -------

为什么要用ArrayList(List)和Hashtable(Dictionary)???

这是由于数组的长度是固定的,数组里存储的数据类型是单一的,也就是说使用数组有很多局限,而上边的四个类就能很好的解决掉这些问题。

一、先复习ArrayList类

ArratList元素的增加、插入、删除、清空、排序、反转

1、ArrayList一些常用的方法

ArrayList list=new ArrayList();//创建List类的实例对象
list.Add();//添加单个元素
list.AddRange();//添加集合
list.Insert();//插入元素
list.InsertRange();//插入集合
插入数据:Insert();
使用语法:
集合名.Insert(位置,值);
删除数据:Remove()、RemoveAt()、Clear()
Remove方法
list.Remove(数据)//根据元素的值进行删除
删除集合中与"数据"相同的数据
当集合中不存在这个数据时,直接忽略
方法执行从左至右删掉第一个出现的数据,其后数据不考虑
list.RemoveAt(数据);//根据元素的索引进行删除
ps.RemoveAt方法
删掉指定索引的数据,其后数据一次向前移动
当索引超出范围后,抛异常
list.Clear();//清空集合中所有数据
PS.集合的长度为什么可以任意的改变?
那是因为:当我们向集合中添加进去一个元素后,这个集合会向内存中申请4个空间,当集合中的元素个数超过在内存中开的空间个数后,集合再次向内存申请多开辟一倍的空间
验证一下:
ArrayList list=new ArrayList();
list.Add(1);
Console.readLine(list.Count);
Console.readline(list.Capacity);
Console.readkey();
在使用ArrayList类的时候注意点:
引用System.Collection命名空间
手动添加(必须记住命名空间)
光标停在代码中,快捷键或鼠标右键(必须记住类名)
学习集合可以注意归纳一下可用的方法
添加数据:Add()、AddRange()--添加数组用add
使用Add可以添加数据,并且与数组一样可以使用“下标”(索引)访问数据
使用下标访问的数据是object类型的,必要时需要进行转换,必须满足里氏转换原则
为什么要把Add参数设为object类型呢?为了通用
AddRange将数组或集合当中的数据批量的一个一个的加进去
数组或集合中有多少个数据,新集合中就添加了多少个数据,类型等一一对应
但Add同样可以将数组或集合作为数据加入,但此时加入数组或集合作为一个项添加过去
只有找到该项,才能通过“下标”访问到其中的数据
集合可以看做数组
可以将集合看作为“长度可变的,具有很多方法的数组”


二、复习Hashtable类
Hashtable俗称键值对集合,功能类似于字典,你能通过拼音去找汉字或者通过偏旁部首找汉字,总而言之,通过一个标示拿到对应的数据。
键值对集合里存的都是一对一对的键跟值,在字典里通过拼音找汉字,在Hashtable里通过键找值。
注意:Hashtable有两个单词组成,Hash和table,table首字母要小写。
Hashtable的命名空间跟ArrayList一样,都在System.Collections里
Hashtable ht=new Hashtable();
ht.Add(键,值);//键跟值的类型都是object类型,所以可以随意写
当遍历键值对集合的时候,我们用foreach循环进行遍历。
foreach(var item in ht.Keys)
{
    


补充:
用foreach遍历之后,输出的顺序是杂乱无章的。
item:就是指你遍历ht集合当中的每一个元素,当遍历的是键的时候,那么item指的也是键
var(推断类型:根据变量的值推断变量的类型)
var v1="张三";
var v2=10;
var v3=3.14;
var v4=true;
获取当前变量的类型
string type=v1.GetType();
一般在使用变量的时候,有的时候不能确定变量的初值,这个变量有可能是用户给你输入的。
当用这样用var的时候,
var v1;
v1="abc";
程序报错,指出当定义v1的时候必须给v1赋初值。
C#是一门强类型语言(什么叫做强类型语言:就是在这门语言当中必须对变量的类型有一个明确的定义)
JS是一门弱类型语言(定义变量的时候,全部用var)
需要注意的地方:
1、键值对集合当中,键必须是唯一的
2、 另外一种给集合添加数据的方式
ht[1]="Hello world"; 
判断一个集合是否包含某一个键的方法:
ht.ContainsKey(键)
Hashtable大家主要掌握的内容:
怎样给键值对集合添加数据,通过foreach循环遍历键值对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值