集合与字典

数组 & ArrayList & List

数组

int []a =new int[5];
  • 优势:数组在内存中是连续储存的,所以它的索引速度是非常快的,而且赋值与修改元素也很简单
  • 劣势:
    · 在数组的两个数据间插入数据很麻烦
    · 在声明数组的时候必须声明数组长度,数组长度过长,会造成内存浪费,数组长度过短,会造成数据溢出

ArrayList

  • 优势:
    · ArrayList的大小是按照其中存储的数据来动态扩充与收缩的
    · 在声明的时候不需要指定长度
    · ArrayList可以很方便的进行数据的添加,插入和移除

    ArrayList array=new ArrayList();
    array.Add("abc");// 将数据新增到集合结尾处
    array[2]=345;// 修改指定索引处的数据
    array.RemoveAt(0);// 移除指定索引的数据
    array.Remove("abc");// 移除指定内容的数据
    array.Insert(0,"hello");// 在指定索引处插入数据
    
  • 劣势
    · ArrayList在储存数据时使用object类型进行存储的
    · ArrayList 使用的时候很可能会出现类型不匹配的错误;就算插入的时候是同类型的数据,在使用的时候也需要再次将它们转化为原类型来处理
    · ArrayList 在存储存在装箱和拆箱操作,导致性能低下

    装箱:将来如int类型或者string等不同的对象通过隐式转换赋给object对象;
    int i=123;
    object o=i;
    拆箱:将object对象通过显示转换赋给int类型的变量
    object o=123;
    int i=(int)o;
    装箱和拆箱 的过程会产生较多的性能损耗

泛型-List集合

  • 限制集合只能存储单一类型数据
  • 在声明的时候,需要同时声明集合内的对象类型
    List<int> list=new List<int>();// 声明一个int类型的集合
    list.Add(123);// 将数据新增到结尾处
    
    List<int> intlist=new List<int>
    {
    	1,
    	2,
    	3	
    };// 对象初始化时赋值
    
    list[2]=345;// 修改指定索引的数据
    list.RemoveAt(0);// 移除指定索引的数据
    list.Remove(3);// 移除指定内容的数据
    list.Insert(0,666);// 在指定索引处添加数据
    

Dictionary

  • 在声明的时候,需要同时声明字典内的类型
    Dictionary<int,string> dic=new Dictionary<int,string>();
    
  • 键与值可以是任何类型
  • 在设置的时候是唯一的,值可以不唯一
    Dictionary<int,string> dic=new Dictionary<int,string>();
    dic.Add(1,"10分");// Add赋值
    dic[2]="20分"// 索引器赋值(可以做新增-修改),2 是键的值
    Dictionary<int,string> dic=new Dictionary<int,string>()
    {
    {1,"10分"},
    {2,"20分"}
    };// 对象初始化赋值
    dic.Remove(1);// 根据键删除数据,返回bool
    
  • Add方法不可以添加已有的键
    dic.Add(1,"10分");// Add赋值
    dic.Add(1,"100分");// 会报错
    
  • 取值方式
string val=dic[1];// 索引器取值,1 是键的值 
foreach(KeyValuePair<int,string> item in dic)
{
	string val=item.value;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值