C#中的集合类

Orangerkey 2008-07-10 05:26:12
1.System.Colloctions中表示集合的行为的接口有:
1)ICollection
定义所有集合的大小、枚举数和同步方法。派生于IEnumerable
它定义了集合类最基本的行为,所有的集合类都实现了这个接口(基接口)
但是它的行为太过基本:主要就是一个Count属性,单独实现它没有太大意义

2)IEnumerable
公开枚举数,该枚举数支持在集合上进行简单迭代
它只有一个方法 GetEnumerator(),该方法可以返回一个IEnumerator接口,通过它可以遍历集合
基本上所有的集合类都实现了这个接口

3)IList
IList实现是可排序且可按照索引访问其成员的值的集合,它本身实现了ICollection和IEnumerable接口
是所有列表的抽象基类。IList 实现有三种类别:只读、固定大小、可变大小。

4)IDictionary
IDictionary实现是键/值对的集合,它本身实现了ICollection和IEnumerable接口
是键/值对的集合的基接口。IDictionary 实现有三种类别:只读、固定大小、可变大小。
IDictionary可称为字典、映射或散列表,它根据键(任意类型)来访问值

------------------------------

2.System.Collections中可以直接使用的集合类有:
1)ArrayList
实现了接口:IList、ICollection、IEnumerable
只要集合未被修改,ArrayList 就可安全地同时支持多个读取器
随着向 ArrayList 中添加元素,容量通过重新分配按需自动增加(2倍增加)
如果需要建立一个对象数组,但不能预先知道数组的大小,就可以使用ArrayList
ArrayList把所有元素都当作object对象引用,因而在访问ArrayList的元素时要进行类型转换
优点:动态改变大小、灵活方便的插入和删除元素、可排序
缺点:插入时性能不如数组、不是强类型的

2)BitArray
实现了接口:ICollection、IEnumerable
管理位值的压缩数组。

3)Hashtable
实现了接口:IDictionary、ICollection、IEnumerable
可以向Hashtable中自由添加和删除元素,有些像ArrayList,但没有那么大的性能开销

4)SortedList
实现了接口:IDictionary、ICollection、IEnumerable
SortedLIst兼顾了ArrayList和Hashtable的优点,可按键值来排序

5)Queue
实现了接口:ICollection、IEnumerable
Queque是队列,先进先出的访问各个元素
可以调用Queque对象的GetEnumerator()方法,得到IEnumerator对象,来遍历队列中的各个元素

6)Stack
实现了接口:ICollection、IEnumerable
Stack是堆栈,后进先出的访问各个元素
可以调用Stack对象的GetEnumerator()方法,得到IEnumerator对象,来遍历堆栈中的各个元素


例如,简单实现遍历arraylist的个项


protected ArrayList subordinates;
IEnumerator enumSub = subordinates.GetEnumerator() ;
while (enumSub.MoveNext()) {
esub = (Employee)enumSub.Current;
sum += esub.getSalaries();
}
...全文
831 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fGxmrizaaquamarine 2011-01-05
  • 打赏
  • 举报
回复
有用,看过了!
liu3435yong 2010-07-18
  • 打赏
  • 举报
回复
缺水名子里有淼,
缺金名子里有鑫,
缺木名子里有森,
那郭晶晶缺什么呢?
Sant11 2008-07-10
  • 打赏
  • 举报
回复
哈哈,广告位出租。。。
接分
fenlin1985 2008-07-10
  • 打赏
  • 举报
回复
狂街!!
秋叶园 2008-07-10
  • 打赏
  • 举报
回复
俯卧撑接分
征服者X 2008-07-10
  • 打赏
  • 举报
回复
接分,学习!
vrhero 2008-07-10
  • 打赏
  • 举报
回复
wudi626 2008-07-10
  • 打赏
  • 举报
回复
先接分,再看!
hackztx 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hackztx 的回复:]
System.Collections.CollectionBase


打酱油。。。。。。。。。。。。。。。。。。。

[/Quote]
hackztx 2008-07-10
  • 打赏
  • 举报
回复
System.Collections.CollectionBase


打酱油。。。。。。。。。。。。。。。。。。。
mogui_ 2008-07-10
  • 打赏
  • 举报
回复
jie
我姓区不姓区 2008-07-10
  • 打赏
  • 举报
回复
普及帖,接分
ericzhangbo1982111 2008-07-10
  • 打赏
  • 举报
回复
什么意思?
散分的?
那我做俯卧撑

110,043

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧