1.14 C# 集合(2)

本文详细介绍了多种数据结构包括ArrayList、哈希表、Stack、Queue等,并解释了泛型集合的优势,如安全性、效率及减少装箱拆箱操作。同时探讨了索引器的特性和用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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修饰,但是属性可以
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值