第五篇:泛型集合

  集合是为了应对数组的大小固定的缺点而生的。如果元素个数是动态的,就应该使用集合类。下面将列出部分经常使用的集合的最佳使用情况:
  ArrayList最适合用于变化的数据类型。
  HashTable最适合用于经常查询的数据。
  Queue提供了先进先出存储器,因此在需要按顺序排序的数据时应该使用该集合。
  Stack提供了先进后出存储器,因此在需要按逆序排序的数据时应该使用该集合。
  SortedList以有序的顺序存储键和值。这会使添加数据变得缓慢,因为需要重新安排已有的项,以确保新的项具有真确的顺序。SortedList最适合于不会经常改变的数据。
  然而不管任何一个集合初始化时请给它一个初始的大小,因为MSDN上有讲到,这些集合在添加项时如果Count小于Capacity则此方法是一个O(1)运算,如果需要增加容量以容纳新元素,则此方法成为O(n)运算,其中n为Count。
  我们以ArrayList为例,ArrayList list=new ArrayList();此时集合默认的大小为零,当加入一个元素时,容量变成4,当加到5个时容量变成8,每次变化都是原来的两倍。
   ArrayList list=new ArrayList(20);
   list.add(1); //box
   int i=(int)list[0]; //unbox
   这将是一个很糟糕的事情。这样将出现装箱拆箱。
  我解释一下装箱和拆箱。装箱:将值类型转换为引用类型。拆箱:将引用类型转换为值类型。装箱和拆箱在一定程度上影响了系统效率,所以我们应当尽量避免其发生。幸运的是泛型的出现很好的解决了这一问题。
  List<int> list = new List<int>;
  list.add(1);
  int i=list[0];
  这样就不需要进行装箱拆箱的动作了,并且不可以存储不同于该集合中已定义类型的任何内容,这还可以减少潜在的错误情况,因为尝试存储错误的数据类型将导致编译错误。所以对于集合的选择我们应当尽量选择泛型集合。
  今日c#性能优化明星:泛型集合
  优化指数:95

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值