日期:2014-05-19  浏览次数:20801 次

最最基础的问题,ICollection 相关的概念问题
刚刚开始学习C#   看了两天语法的东西   ,了解了十之八九,还有很多东西想要知道,Collection方面就是其中之一,之后还有很多问题,希望大家能够帮助。

问题如下:
比较常用的Collection有哪些?
我现在看了
ArrayList
List <>
SortedList
Hashtable
Dictionary <>

1   请问大家平时用到比较多的还有哪些?   他们都有些什么继承关系(父接口   事先等等的关系表)     或者给我一个类似的关系图链接就好
2   关于Hastable     Dictionary   SortedList等   我使用Add方法的时候都不能插入键值相同的数据,之后我只能用   var[key]=xxxx来实现这种操作,请问是否有别的方法?我想做的就是往容器插入多组数据,遇到key相同的情况,自动覆盖掉先前的那组数据。
3   2中提到的那些容器,当我想用null作为key的时候   应该怎么做?   有没有哪个容器可以接受null作为key?  
4   我要实现集合操作应该选择哪个容器?   就是说我有一组数据,但是其中有些是重复的,我希望放入一个容器,只保留不重复的
5   对于容器的Contains仿佛进行判断是否有该元素的时候,是否只要定义操作符==   的返回值为true,就认为含有该元素呢?
6   这些容器是否是线程安全的?

暂时就这些问题吧     谢谢大家了

------解决方案--------------------
1、要熟悉数据结构
2、用封装Add的方法来解决
3、没有试过
4、根据需求选择,当然要加入自己的业务逻辑,不会什么都是现成的。
5、可以看看MSDN中的Contains
6、容器线程安全,但不能保证里面的数据是否线程安全
------解决方案--------------------
我指不要key的情况
比如我有一个int[] intArray={1,1,2,2,2,2,2,2,3,4};
我必须用key value的方式来做吗?
能不能存在某个容器XX
xx.AddRange(intArray) 往里面放入{1,3,3,4}
___________________________________________________

没有一个现成的容器实现此功能,需要自己包装一下.你如果不要key,最好去包装ArrayList,去Override它的AddRange 方法.