黑马程序员技术交流社区
标题: 集合泛性集合 [打印本页]
作者: 边亮 时间: 2013-3-13 17:33
标题: 集合泛性集合
集合中包括:ArrayList和HashTable;
泛性集合包括:List和dictionary;
是不是就这四种;
有什么相同不同!
作者: 王智威 时间: 2013-3-13 17:50
肯定不止这四种,有好多种,一般只是谈论比较常用的集合框架,根据功能不一样分为几个体系,这相同和不同视频上都有说,内容很多
作者: 欧玉斌 时间: 2013-3-14 18:17
好久没有逛论坛了。今天有空来看看,就帮答一下吧,以下是黑马的笔记。
因为数组的长度是固定的,不方便使用,所以有了集合,集合在初始化时不需要声明长度,添加元素用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);
3、Sort升序排序:arrList.Sort();如果想实现降序,可以先升序排序再调用Reverse()反转数组。来实现降序的功能。
Reverse反转:arrList.Reverse();
4、可以用for、foreach遍历
二、HashTable和ArrayList不同的是,它是键值对集合,不提供下标访问索引器,所以不能用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);
}
4、hashtable添加键值对:hash.add(object key,object value);
5、hashtable判断是否包含某个键hash.Contains(key)
6、判断是否包含某个值hash.ContainsValue()
7、根据键移除对应元素:hash.Remove("sk");
8、计算集合元素个数:hash.Count
作者: 欧玉斌 时间: 2013-3-14 18:17
三、List和Dictionary是泛型集合,可以在编译阶段告诉编译器,元素的类型。因为非泛型集合ArrayList和HashTable用Add添加时,要 传入的是Object类型,而我们把int类型等的参数传入时,会发生装箱(将int这种值类型赋值给object这种引用类型,即发生装箱,拆箱则是引用类型赋值给值类型)。装箱拆箱操作极大的破环程序的性能,不过在Net2.0中提供了泛型集合类,所以完全可以用List<T> 和Dictionary<Tkey,Tvalue> 来代替 原来1.0中的ArrayList和HashTable,即使是List<Object>也会比ArrayList的性能要好。
四、List:相当于ArrayList的泛型版本。
1、List<int> list1 = new List<int>();//定义一个元素int类型的泛型集合
list.Add(1);添加一个int
2、遍历可以用for和foreach,与ArrayList类似
五、Dictionary:相当于HashTable的泛型版本。
1、Dictionary<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);
}
作者: 郑志强 时间: 2013-3-14 18:22
非泛型集合类 泛型集合类
ArrayList List<T>
HashTable DIctionary<T>
Queue Queue<T>
Stack Stack<T>
SortedList SortedList<T>
非泛型集合 需要拆箱和装箱 占用太多系统资源
泛型集合 可以指定存储数据类型
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |