[C#初级] 集合

本文介绍了C#中的集合类型ArrayList,作为动态数组,它允许动态调整大小和存储不同类型的对象。文章通过示例展示了ArrayList的创建、添加、访问、删除元素以及调整容量的方法,强调了智能使用TrimToSize()方法以优化内存占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么使用集合

 

 

 

之前有讲过数组,用来存储多个相同数据类型的集合。但是数组的长度是固定不可变的,所以在实际项目中,如果数据集需要动态添加扩充,则数组很容易饱和。且数组在操作时,如果遇到复杂的业务环境,操作起来也颇为繁琐,甚至无法实现。于是我们需要用到C#中的集合类型

 

 

 

集合

 

 

 

集合一般是一组由类实例化的对象组成的数据集,方便统一组织和操作对象。集合的优点是

①其大小可以动态调整,这样在面对复杂的业务时,如果需要动态新增,集合也可以动态调整。

②可以存储任意类型的对象,数组在使用时会有强制类型约定,但是集合可以做到不同数据类型存储。

③集合提供了很多方法对集合中的对象进行操作。

 

 

C#中集合定义在System.Collections命名空间下。集合类型有:

 

ArrayList(动态数组)

Hashtable(哈希表)

SortedList(排序列表)

Stack(堆栈)

Queue(队列)

BitArray(点阵列)

 

 

今天主要讲ArrayList(动态数组)

 

 

 

 

ArrayList

 

 

 

ArrayList和数组非常相似,但是由于其长度可以动态调整,所以称之为动态数组。

 

C#中直接使用ArrayList可能会报错,此时我们需要引用命名空间。

 

 

鼠标悬停在ArrayList上面,会出现智能提示,其后点击对应的命名空间即可,一般是第一个。

 

点击以后,会自动将命名空间追加在类文件前面的using区

 

当然,using System.Collections;也可以手动写上去。

但是目前为止,VS还是业界公认的宇宙第一IDE(集成式开发环境|工具)。所以有智能提示,该用就用。

 

我写了一个例子,来证明ArrayList的长度是可变的,以及他可以存储任意数据类型。

 

上述例子,list在定义之后,输出了一次长度,长度为0.

然后使用Add()方法向其增加了一个int类型的值,然后再次输出长度,此时长度变成了1。

其后又增加了一个string类型的字符串,其后长度为2。

最后使用循环将其ArrayList中存储的数据遍历打印了一遍。

 

 

 

ArrayList的属性

 

 

 

ArrayList中最常用的属性就是Count。用来获取集合中的实际包含的元素数量。这里的Count代表的也是ArrayList的长度,但是并不代表其在内存中开辟的空间容量。ArrayList中的容量使用属性Capacity获得。

 

ArrayList在定义时,可以指定容量,也可以不设定容量!

不设定容量,容量默认为0,首次容量增加为4,容量超出后,容量自动翻倍。

设定容量时,容量默认为设定值,容量超出后,容量自动翻倍。

 

//不设定容量。默认为0ArrayList list = new ArrayList();
//设定容量ArrayList list = new ArrayList(2);//设定初始容量为2

 

看看实际代码例子:

上述例子,未设定容量,容量初始为0。增加内容后,容量变为4。当我增加至了第五个值后,容量变为8。容量翻倍了。

 

 

再看看设定容量的例子:

初始设定容量为2。增加到第三个值时,容量变成了4。到第五个值时。容量变成了8。

 

 

注意,多余的容量,也会占用内存空间,所以无形之中加重了系统的负担。此时我们可以使用ArrayList的TrimToSize()方法来缩小容量,移除多余的空间占用。

可以看到,我调用TrimToSize()方法后,ArrayList的容量变为了5。

 

 

 

ArrayList的操作

 

 

ArrayList的新增很简单,调用Add()方法即可。新增加的元素会添加至ArrayList的末尾。也可以通过Insert(int index,object value)方法,将元素添加至集合中的指定索引位置(相当于插队),如果目标位置有元素占用了,则所有的元素都会向后移位。

ArrayList的访问,依旧是通过索引下标完成。

可以看到,我在给list增加第五个元素时,使用了Insert方法。将元素5新增至集合中索引为1的位置(索引从0开始,1就是第二个位置)。最终输出结果是:

1..5..2..3..4

 

删除元素可以使用Remove(object value)方法来删除。是根据值来删除。比如我要删除元素值为3的内容,则

 

也可以通过索引下标来删除RemoveAt(int index)

注意啊,RemoveAt方法传入的参数是下标,元素3的下标是2,所以这里传参数的时候传2就好了。

 

Clear()方法是清除ArrayList中所有的元素。调用一下所有的元素就都被删除了,这没啥好演示的。。。毕竟没有内容输出了。

​​​​​​​

ArrayList list = new ArrayList(2);list.Add(1);list.Add(2);list.Add(3);list.Add(4);//清除所有list.Clear();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值