哈哈,如果你非要这样提问不可,我也不好说什么。真有不少新手提出这样的问题,我还是要说,这是个好问题,毕竟程序员是最具有创新精神的群体。
可是,计算机语言中,至少我知道的C系列的语言,比如C/C++、C#、Java等等,在定义数组的时候,规定数组的大小就是定长的。这一方面跟原创约定有关,同时,也因为创建数组的时候,需要一次性给它分配存储空间。
所以,数组这个特殊的数据类型,的确存在它的局限性:
那么,如果真的遇到(其实经常会遇到)一个序列类型的数据,但是,它的初始长度不确定,或者,使用过程中(也就是生命周期内)需要添加或者移除其中部分元素,这时候,我们那什么来拯救自己?
是的,没错,简言之,就是一个不受长度限制的数据序列类型成为了一个客观的需求。难道是语言的创始者没想到?咱们创新的机会来了?打住、打住。建议所有的新手们都不要这样思考问题,一定不是前浪没想到,而是后浪才开始。你多浪几下,就会看到你现在还没看到的东西。
哈哈,也不要说“我命由我不由天”好吧,没那么严重。当然,也不至于简单到能随便new一个出来的。你该做的,还是应该静下心来,把搜索引擎打开。
好了,为了节省大家的时间,这里,我就不绕弯子了,直接给大家推荐一个新的数据类型,它就是List列表。当然它的前身是ArrayList。(C#2.0以前)
List列表,微软官方称之为泛型集合。
关于泛型,我们今后有机会还会进一步探讨。这里我们暂不关注什么是泛型,我们现在需要重点关注的是它的使用特性。
1、如何创建一个List列表?
List<T> myList = new List<T>();
2、如何给一个List列表添加数据?
List<int> myList = new List<int>();
//为myList 列表添加1、2、3、4、5这五个整数类型的元素:
myList.Add(1);
myList.Add(2);
myList.Add(3);
myList.Add(4);
myList.Add(5);
以上为myList添加了5个元素。
3、如何获得一个List列表的长度?
int mycount = myList.Count;
List列表的长度,就是列表中拥有的元素个数,即是List的Count属性。
4、如何移除List列表中的元素?
(1)、删除一个值
语法:List. Remove(T item)
案例:myList.Remove("zhangsan");
(2)、删除下标(即索引)为index的元素
语法:List. RemoveAt(int index);
案例:myList.RemoveAt(0);
(3)、从下标(即索引)index开始,删除count个元素
语法:List. RemoveRange(int index, int count)
案例:myList.RemoveRange(3, 2);
5、如何遍历List中元素?
//遍历列表元素
foreach (var item in myList)
{
//控制台循环输出显示列表元素
Console.WriteLine(item);
}
//遍历(迭代)列表元素
for (var i = 0; i < myList.Count; i++)
{
//控制台循环输出显示列表元素
Console.WriteLine(myList[i]);
}
//Count 属性,用于获取数组中当前元素的总数量
6、List列表的常用操作函数
Item( ) 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。
Add( ) 在List中添加一个对象的公有方法
AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素
BinarySearch( ) 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.
Clear( ) 在List内移除所有元素
Contains( ) 测试一个元素是否在List内
CopyTo( ) 重载的公有方法,把一个List拷贝到一维数组内
Exists( ) 测试一个元素是否在List内
Find( ) 查找并返回List内的出现的第一个匹配元素
FindAll( ) 查找并返回List内的所有匹配元素
GetEnumerator( ) 重载的公有方法,返回一个用于迭代List的枚举器
Getrange( ) 拷贝指定范围的元素到新的List内
IndexOf( ) 重载的公有方法,查找并返回每一个匹配元素的索引
Insert( ) 在List内插入一个元素
InsertRange( ) 在List内插入一组元素
LastIndexOf( ) 重载的公有方法,,查找并返回最后一个匹配元素的索引
Remove( ) 移除与指定元素匹配的第一个元素
RemoveAt( ) 移除指定索引的元素
RemoveRange( ) 移除指定范围的元素
Reverse( ) 反转List内元素的顺序
Sort( ) 对List内的元素进行排序
ToArray( ) 把List内的元素拷贝到一个新的数组内
trimToSize( ) 将容量设置为List中元素的实际数目
好了,有了List列表这个利器,创建或使用一个不定长的“数组”,还需要着急吗?