Hashtable是System.Collections命名空间提供的一个容器

时间:2021-10-10 07:36:25

常用调集接口系列:

常用调集类系列:

常用调集类:

数组(Array)的不敷(即:调集与数组的区别)

1. 数组是固定巨细的,不能伸缩。虽然System.Array.Resize这个泛型要领可以重置数组巨细,但是该要领是从头创建新设置巨细的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而调集倒是可变长的。

2. 数组要声明元素的类型,调集类的元素类型倒是object。

3. 数组可读可写不能声明只读数组。调集类可以供给ReadOnly要领以只读方法使用调集。

4. 数组要有整数下标才华访谒特定的元素,然而很多时候这样的下标并不是很有用。调集也是数据列表却不使用下标访谒。很多时候调集有定制的下标类型,对付行列队伍和栈根柢就不撑持下标访谒!

数组列表(ArrayList)

ArrayList可以存储任何类型,不像List泛型那样有严格要求,List<T>更有效,ArrayList就相当于是List<object>。

ArrayList类东西被设计成为一个动态数组类型,其容量会跟着需要而适当的扩充要领:

1:Add()向数组中添加一个元素

2:Remove()删除数组中的一个元素

3:RemoveAt(int i)删除数组中索引值为i的元素

4:Reverse()反转数组的元素

5:Sort()以从小到大的挨次摆列数组的元素

6:Clone()复制一个数组

System.Collections定名空间包罗接口和类,这些接口和类界说各类东西(如列表、行列队伍、位数组、哈希表和字典)的调集。System.Collections.Generic 定名空间包罗界说泛型调集的接口和类,泛型调集允许用户创建强类型调集,它能供给比非泛型强类型调集更好的类型安适性和性能。System.Collections.Specialized 定名空间包罗专用的和强类型的调集,例如,链接的列表词典、位向量以及只包罗字符串的调集。

列表(List)

可通过索引访谒的东西的强类型列表。供给用于对列表进行搜索、排序和操纵的要领,在决定使用List还是使用ArrayList类(两者具有类似的成果)时,记住List类在大大都情况下执行得更好并且是类型安适的。如果对List类的类型T使用引用类型,则两个类的行为是完全不异的。但是如果对类型T使用值类型,则需要考虑实现和装箱问题。

如果对类型T使用值类型,则编译器将出格针对该值类型生成List类的实现。这意味着不必对List东西的列表元素进行装箱就可以使用该元素,并且在创建约莫500个列表元素之后,不同错误列表元素装箱所节省的内存将大于生成该类实现所使用的内存。

哈希表(HashTable)

一、哈希表(Hashtable)简述

在.NET Framework中,Hashtable是System.Collections定名空间供给的一个容器,用于措置惩罚惩罚和表示类似key/value的键值对,,此中key凡是可用来快速查找,同时key是区分巨细写;

value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以撑持任何类型的key/value键值对.

二、哈希表的简单操纵

在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);

在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);

从哈希表中移除所有元素:HashtableObject.Clear();

判断哈希表是否包罗特定键key:HashtableObject.Contains(key);

字典(Directonary)

Hashtable和Dictionary<K, V>类型
 1:单线程中保举使用Dictionary,有泛型优势,且读取速度较快,容量操作更丰裕.
 2:多线程中保举使用Hashtable,默认Hashtable允许单线程写入, 多线程读取对Hashtable进一步挪用Synchronized()要领可以获得完全线程安适的类型,而Dictionary非线程安适,必需酬报使用lock语句进行掩护, 效率大减。
 3:Dictionary有按插入挨次摆列数据的特性(注:但当挪用Remove()删除过节点后挨次被打乱), 因此在需要浮现挨次的情境中使用Dictionary能获得必然便利。

HashTable应用场合:做东西缓存,树递归算法的替代,和各类需提升效率的场合。HashTable中的key/value均为object类型,由包罗调集元素的存储桶构成。存储桶是 HashTable中各元素的虚拟子组,与大大都调集中进行的搜索和检索对比,存储桶可令搜索和检索更为便捷。每一存储桶都与一个哈希代码关联,该哈希代码是使用哈希函数生成的并基于该元素的键。HashTable的长处就在于其索引的方法,速度非常快。如果以任意类型键值访谒此中元素会快于其他调集,出格是当数据量出格大的时候,效率分歧尤其大。

排序列表(SortedList)

与哈希表类似,区别在于SortedList中的Key数组排好序的

名-值调集(NameValueCollection)

NameValueCollection与HashTable很类似,但是他们还是有区另外,HashTable 的KEY是独一性,而NameValueCollection则不独一

仓库(Stack)

暗示东西的简单的后进先出非泛型调集。Push要领入栈,Pop要领出栈

行列队伍(Queue)

行列队伍先进先出,enqueue要领入行列队伍,dequeue要领出行列队伍