A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 边亮 中级黑马   /  2013-3-13 17:33  /  1521 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

集合中包括:ArrayList和HashTable;
泛性集合包括:List和dictionary;
是不是就这四种;
有什么相同不同!

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

4 个回复

倒序浏览
肯定不止这四种,有好多种,一般只是谈论比较常用的集合框架,根据功能不一样分为几个体系,这相同和不同视频上都有说,内容很多
回复 使用道具 举报
好久没有逛论坛了。今天有空来看看,就帮答一下吧,以下是黑马的笔记。
因为数组的长度是固定的,不方便使用,所以有了集合,集合在初始化时不需要声明长度,添加元素用add,非常方便。
集合主要有以下几个方法:add:添加元素;addRange()add不同的是,参数必须实现icollenction接口,一般用于添加数组;remove移除;removeat根据索引移除;clear清除;contains()是否包含某一元素;toArray()转换为数组;
一:ArrayList集合:
1、添加元素:
       ArrayListarrList = new ArrayList();
       arrList.Add(object value);
       arrList.AddRange(newstring[] { "", "", "" });
2、根据索引移除元素:arrList.RemoveAt(1);
3Sort升序排序:arrList.Sort();如果想实现降序,可以先升序排序再调用Reverse()反转数组。来实现降序的功能。
       Reverse反转:arrList.Reverse();
4、可以用forforeach遍历
二、HashTableArrayList不同的是,它是键值对集合,不提供下标访问索引器,所以不能用for遍历,而要用foreach
遍历hashtable的三种方式:
1、遍历键集合:
Hashtable hash = new Hashtable();
foreach(var item in hash.key)
{
Console.WriteLine(item);
}
2、遍历值集合:
foreach(var item in hash.Values)
{
Console.WriteLine(item);
}
3、键值对一起遍历:
foreach (DictionaryEntryitem in hash)
{
      Console.WriteLine(item.Key+ "     " + item.Value);
}
4hashtable添加键值对:hash.add(object key,object value);
5hashtable判断是否包含某个键hash.Contains(key)
6、判断是否包含某个值hash.ContainsValue()
7、根据键移除对应元素:hash.Remove("sk");
8、计算集合元素个数:hash.Count


回复 使用道具 举报
三、ListDictionary是泛型集合,可以在编译阶段告诉编译器,元素的类型。因为非泛型集合ArrayListHashTableAdd添加时,要 传入的是Object类型,而我们把int类型等的参数传入时,会发生装箱(将int这种值类型赋值给object这种引用类型,即发生装箱,拆箱则是引用类型赋值给值类型)。装箱拆箱操作极大的破环程序的性能,不过在Net2.0中提供了泛型集合类,所以完全可以用List<T> Dictionary<Tkey,Tvalue> 来代替 原来1.0中的ArrayListHashTable,即使是List<Object>也会比ArrayList的性能要好。
四、List:相当于ArrayList的泛型版本。
1List<int> list1 = new List<int>();//定义一个元素int类型的泛型集合
       list.Add(1);添加一个int
2、遍历可以用forforeach,与ArrayList类似
五、Dictionary:相当于HashTable的泛型版本。
1Dictionary<string, int> dict = new Dictionary<string, int>();//定义一个键为string类型,值为int类型的集合。
   dict.Add("sk", 18);//添加元素
2、遍历键
    foreach (string item in dict.Keys)
    {
         Console.WriteLine(item);
     }
3、遍历值
    foreach (int item in dict.Values)
     {
         Console.WriteLine(item);
    }
4、直接遍历Dictionary
    foreach (KeyValuePair<string, int> item in dict)
     {
        Console.WriteLine(item.Key + "    " + item.Value);
      }

回复 使用道具 举报
非泛型集合类 泛型集合类
ArrayList           List<T>
HashTable         DIctionary<T>
Queue               Queue<T>
Stack                Stack<T>
SortedList          SortedList<T>

非泛型集合 需要拆箱和装箱  占用太多系统资源
泛型集合  可以指定存储数据类型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马