day 14 集合(2)
1,ArrayList是线性数据结构---->对应的泛型线性结构为List<T>
模拟foreach循环原理
IEnumerator ie = al.GetEnumerator();
while (ie.MoveNext())
{
Student s = (Student) ie.Current;
Console.WriteLine(s.stu_name + ":" + s.stu_id + ":" + s.stu_score);
}
泛型集合List<T>
为什么使用泛型
1,泛型集合比非泛型集合对于数据这一块来说,是安全的,没有脏数据
2,在一定数据量的前提下,泛型比非泛型写入数据和读取数据要快的多
3,泛型集合处理数据快的原因是少了装箱和拆箱的操作
初始化List集合,限定内部数据仅为int
List<int> list = new List<int>();
2,哈希表(字典)key-value
Hashtable
Dictionary<TKEY,TVALUE>
key唯一
key不能对应多个value,但是value可以对应多个key
Hashtable ht = new Hashtable();
遍历所有的键 foreach (var item in ht.Keys)
遍历所有的值 foreach (var item in ht.Values)
遍历全部key-value DictionaryEntry 字典实体-->内部的内容
foreach (DictionaryEntry item in ht) {
int key = (int)item.Key;
Student values = (Student)item.Value;
Console.WriteLine("Key值为{0},{1}",key,values.Name);}
遍历4 IDictionaryEnumerator ide= ht.GetEnumerator();
while (ide.MoveNext()){
DictionaryEntry de = (DictionaryEntry)ide.Current;
int key = (int)de.Key;
Student s1=de.Value as Student;
Console.WriteLine(s1.Name+s1.Score);}
3,Stack--堆栈 Stack<T>
Stack sk = new Stack();
Push() | 将对象插入Stack的顶部.(入栈操作) |
Pop() | 移除并返回Stack顶部的对象.(出栈操作) |
Peek() | 返回位于stack顶部的对象,但不移除. |
Contains() | 确定某元素是否在栈中 |
Clear() | 从statck中移除所有对象 |
Count | 获取栈中包含的元素 |
4,Queue--队列
Queue que = new Queue();
Enqueue() | 将对象添加到Queue的结尾处,入队. |
Dequeue() | 移除并返回位于Queue开始处的对象 |
Peek() | 返回位于Queue开始处的对象但不将其移除 |
Contains() | 确定某元素是否在Queue中 |
Clear() | 从Queue中移除所有对象 |
Count | 获取Queue中包含的元素数 |
5,索引器
作用:让对象具有快速访问元素的能力
索引器和数组的区别:
1,索引器的索引类型(index)不限定整数
2,索引器支持方法重载
3,索引器实际上跟属性是一样的,也属于特殊的方法
同样具备set和get访问器
索引器和属性的区别
1,索引器是以关键字this来标识的,属性数任意字符,
首字母大写
2,索引器可以重载,属性不能
3,索引器是可以有参数的,但是属性没有
4,索引器不能用static修饰,但是属性可以