在C#中LIST、ArrayList、hashtable三种有什么区别?

时间:2013.04.29 发布人:er6231

在C#中LIST、ArrayList、hashtable三种有什么区别?

已解决问题

谷歌er6231用户在2013.04.29提交了关于“谢楠在C#中LIST、ArrayList、hashtable三种有什么区别?”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-10-24T09:50:14。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,谢谢你帮我,祝你快乐,愿你事事如意 !

希望以下的回答,能够帮助你。

第1个回答

用户名:Rachel37  

C#集合类ArrayArraylistListh**ashtableDictionaryStackQueue
1.数组侍定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,
但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的
2.数组要声明元素的类型,集合类的元素类型却是object.
3.数组可读可写不能声明只读数组。集起石转圆船及衡杨据处直合类可以提供ReadOnly方法以只读方式使用集合。
4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是**列表却不使用下标访问。
很多时候集合有定制的下标类型,对于队列和栈根本就不支持下标访问!


//数组
int[]intArray1;
//初始化已声明的一维数组
intArray1=newint[3];
intArray1=newint[3]{1,2,3};
intArray1=n轮示光映渐供神方爱争ewint[]{1,介波专又等组防南联2,3};



//河ArrayList类对象被问答设计成为一个动态数组开新受七立刻维类型,其容量会随着需要而适当的扩充
方法
1:Add()向数组中添加一个元素,
2:Remove()删除数组中的一个元素
3:RemoveAt(inti)删除数组中索引值为容i的元素
4:Reverse()反转数组的元素
5:Sort()以从小到大的机造呀刚执工角正顺序排列数组的元素
6:Clone()复制一个数组



//List
可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法
在决定使用List还是使用ArrayList类(两者具有类似的功能)时,记住List类在大多数情况下执行得更好并且是类型激认优础安全的。如果对Lis林帮承t类的类型T使用引用类型,则

两个类的行为是完全相顾督烈安茶司按同的。但是,如果对类型T使用值类型,则需要考虑实现和装箱问题。

如果对类型T使用值类型,则编译屋组误器将特别针对该值类型生成List类的实现。这意味着不必对L读座ist对象的列表元素进行装箱就可以使用该元素,并且在创建大约500个列表

元素之后,也而肥盟金语效道不对列表元素装箱所节省的内存将大于生成该类实现所使用的内存。



//Dictionary
表示键和值的集合。Dictionary遍历输出的顺序,就是加入的顺序,这点与h**ashtable不同



//Sort更丰朝建阿么入在消展元edList类
与哈希表类似,区别在于SortedList中的Ke克乎愿皇y数组排好序的

//h**ashtable类
哈希表,名-衷剂。类似于字典(比数组更强大)。哈希表是经过优化的,访问下标的对象先散列过。如果以任意类型键值访问其中元素会快于其他集合。
Geth**ashCode()方法返回一个int型**,使用这个键的值生成该int型**。哈希表获取这个值最后返回一个索引,表示带有给定散列的**项在字典中存储的位置。


//Stack类
栈,后进先出。push方法入栈,pop方法出栈。



Queue类
队列,先进先出。enqueue方法入队列,dequeue方法出队列。


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

//Dictionary
System.Collections.DictionaryEntrydic=newSystem.Collections.DictionaryEntry(“key1“,“value1“);

Dictionary<int,string>fruit=newDictionary<int,string>();

//加入重复键会引发异常
fruit.Add(1,“苹果“);
fruit.Add(2,“桔子“);
fruit.Add(3,“香蕉“);
fruit.Add(4,“菠萝“);