C#数据存储(List泛型、Arrrylist、Hashtable)

一、(List<T>)List泛型

 

List泛型集合C#编程中的经常使用的集合之一,相对数组它可以动态的添加元素而不是声明的时候就必须指定大小。相对于ArrayList集合和Hashtable集合的优势是其元素的数据类型可以确定。而不是默认的父类类型object。

 

List泛型集合的声明与元素添加

 

1.List泛型集合的声明:
List<数据类型> 变量名=new list<数据类型>();
2.List泛型集合的声明案例:
//声明一个List泛型集合的变量listNew
List<string> listNew=new List<string>();
注意:
1,以上代码声明的是一个string类型的泛型集合,其元素必须都为string型。
2,可以声明其他元素的泛型集合,只需要将string改成对应类型便可。
3.List泛型集合添加元素的Add()方法:
代码案例:为第二步声明的集合添加五个元素:
listNew.Add(“一号元素”);
listNew.Add(“二号元素”);
listNew.Add(“三号元素”);
listNew.Add(“四号元素”);
listNew.Add(“五号元素”);
说明:
1,List泛型集合只能使用Add()方法添加元素,不能直接指定下标赋值如:“listnew[0]=”一号元素”;”这样的语句是不合法的。因为List泛型集合在声明之后没有添加元素之前是空的,直接指定下标赋值会导致索引超出范围。
2,一旦元素添加成功,指定下标修改集合中的元素,如在这个声明例子中我们可以将”二号元素”改成任何字符串,如“你好”。
listNew[1]=”你好”;
3,List泛型集合和数组一样,其下标是从0开始的。
因为元素是字符串,我们也可以添加一个字符串数组在集合中,使用AddRange()方法便可:
案例)为listNew集合添加一个字符串数组
代码:
//声明一个字符串数组,有三个字符串元素
string[] str=new string[]{“六号元素”,”七号元素”,”八号元素”};
//使用AddRange()方法将元素添加到集合中
listNew.AddRange(str);
//添加成功
添加完成之后该集合便有了8个元素。

 

List泛型集合的常用属性

 

1.Count属性
返回List泛型集合中元素的数量。
如我们对上面已经添加过元素的集合获得其Count属性值
Console.WriteLine(listNew.Count); //输出ListNew集合的元素数量
输出值为:5
2.Capacity属性
返回在不增加大小的情况下目前List泛型集合的容量
List泛型集合在添加元素的时候容量是变化的,其过程(原理)如下:
当添加元素的时候集合的容量不足以容纳所有元素就会自动增加目前元素数一倍的容量。
所以在上面的例子中listNew集合的容量的增加过程如下:
添加第一个元素的时候Capacity的值为1;
添加第二个元素的时候Capacity的值为2;
添加第三个元素的时候Capacity的值为4;
添加第四个元素的时候Capacity的值为4;
添加第五个元素的时候Capacity的值为8;

 

List泛型集合的常用方法:

 

1.Add()方法,添加元素的方法,前面已经讲过
2.Clear()方法,无返回值,清空集合中的所有元素
案例:清空ListNew集合中的所有元素
listNew.Clear();
3.Contains()方法,返回布尔型数据,参数为集合中元素的数据类型
功能:检查集合中是否存在某元素
案例:检查listNew集合中是否存在字符串元素”一号元素”。
代码:listNew.Contains(“一号元素”);
返回值为:true。
4.Equals()方法
比较两个List泛型集合是否相等
举例,比较listNew集合与listold集合是否相等:
代码:listNew.Equals(listold); //本人就不声明listold集合了,理解Equals()方法即可。因为不常用。

5.Indexof()返回值为int,从索引位置0开始查找元素,并得到索引值
比如我们要在listNew集合中查找元素”四号元素”的第一个索引位置(考虑到有多个”四号元素的情况”)
代码:
listNew.Indexof(“四号元素”);
返回值为:3。
6.Insert()方法,插入元素
如我们在listNew集合的索引位置3上插入”三点五号元素”
listNew.Insert(3,”三点五号元素”);
插入后元素数量变为增加了1,原来索引3位置上的元素在索引位置4上了,后面的元素全部向后移动了一格。
7.Remove()方法,删除指定元素
如我们删除刚刚添加的”三点五号元素”
代码:listNew.Remove(“三点五号元素”);
删除这个元素之后后面的元素会上移一个索引位置
8.RemoveAt()方法,根据索引位置删除元素
如:我们删除当前三号索引位置处的元素
代码:listNew.RemoveAt(3);
删除这个元素之后后面的元素会上移一个索引位置。
9.Reserve()方法,将集合中的所有元素反向排序
如,我们将listNew集合中的所有元素反向排序
代码:listNew.Reserve();
反向排序之后集合中元素的索引会有改变
10.ToArray()方法,将集合转换为数组
如我们将listNew集合转换为一个string数组
string[] str=listNew.ToArray();

二、

一、C#中的ArrayList

ArrayList集合类似于C#中的数组数据类型。最大的区别是数组列表集合的动态性质,而数组是固定的。

对于数组,您需要在数组声明时明确可以容纳的元素个数。但是,对于“数组列表”集合,不需要事先进行此操作。可以随时在数组列表集合中添加或删除元素。下面让我们更详细地了解可用于数组列表集合的操作。

二、声明ArrayList

下面示例是ArrayList的声明。借助ArrayList类创建一个数组列表集合的对象。“ new”关键字用于创建ArrayList的对象。然后将该对象分配给变量list。因此,现在将使用变量list来访问数组列表的不同元素。

ArrayList list = new ArrayList();
三、操作ArrayList

1.向数组列表集合添加一个元素。

Add()方法用于将任何类型的元素添加到集合中。ArrayList是弱类型的,所以,您想要添加元素的话,任意类型都可以。如下图:

 

 

2.向数组列表集合删除一个元素。

Remove()就去可以删除一个集合中的元素,而RemoveAt()方法可以删除指定索引位置的元素。具体用法如下所示:

list.Remove(“广东”);
list.RemoveAt(0);
3.求集合元素总数量。

使用属性Count即可以获得集合的元素个数。代码示例如下:

var count = list.Count;
4.判断是否包含某元素

此方法用于查看ArrayList集合中是否存在元素。以下是此语句的一般语法。

ArrayList.Contains(element)–如果列表中存在元素,则此方法将返回true,否则将返回false。

5.遍历集合

使用循环语句即可遍历整个集合,因为该集合实现了IEnumerable接口。

foreach (var item in list)
{
MessageBox.Show(item.ToString());
}

————————————————
版权声明:本文为CSDN博主「中洲少年」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mazhiyuan1981/article/details/110307431

三、C#中哈希表(HashTable)的用法详解

【Hashtable】

本质

哈希表

 

特点

存在装箱拆箱

存储任意类型

键值对成对出现

一个键对应一个值

通过键快速查找值

 

 

【声明】

需要引用命名空间

 

 

 

【添加】

向Hashtable中添加键值对

Add方法

 

 

【获取】

通过键快速获取值

以中括号的形式访问

 

 

【移除】

移除键值对

Remove方法

 

 

【查看是否存在】

查看键是否存在

ContainsKey方法

查看值是否存在

ContainsValue方法

 

 

【查看键值对数量】

获取键值对数量

Count

 

 

【清空】

清空容器

Clear方法

 

 

【遍历】

遍历键

同时得到值

 

遍历值

无法得到键

 

键值对一起遍历

 

迭代器遍历法

键值对一起遍历

 

【装箱拆箱】

        由于用万物之父来存储数据,自然存在装箱拆箱。当往其中进行值类型存储时就是在装箱,当将值类型对象取出来转换使用时,就存在拆箱。

 

 

【总结】

本质

哈希表

 

特点

存在装箱拆箱

存储任意类型

键值对成对出现

一个键对应一个值

通过键快速查找值

 

常用方法

添加键值对:Add

移除键值对:Remove

获取值:中括号+键

键是否存在:ContainsKey

值是否存在:ContainsValue

查看键值对数量:Count

清空:Clear

遍历:4种方法

 

注意

快速查找

装箱拆箱

四种遍历

作者:一唐老狮一 https://www.bilibili.com/read/cv15837361/ 出处:bilibili

相关推荐: C#获取Session对象

protected void Page_Load(object sender, EventArgs e) { YF.Model.Admin myuser = new YF.Model.Admin(); //myuser = YF.SessionHelper.G…

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片