如何创建一个不受长度限制的数组?
如何创建一个不受长度限制的数组?
哈哈,如果你非要这样提问不可,我也不好说什么。真有不少新手提出这样的问题,我还是要说,这是个好问题,毕竟程序员是最具有创新精神的群体。
可是,计算机语言中,至少我知道的C系列的语言,比如C/C++、C#、Java等等,在定义数组的时候,规定数组的大小就是定长的。这一方面跟原创约定有关,同时,也因为创建数组的时候,需要一次性给它分配存储空间。
所以,数组这个特殊的数据类型,的确存在它的局限性:
- 长度的定义:在数组创建时必须指定。
- 长度的修改:在生命周期里不能修改。
那么,如果真的遇到(其实经常会遇到)一个序列类型的数据,但是,它的初始长度不确定,或者,使用过程中(也就是生命周期内)需要添加或者移除其中部分元素,这时候,我们那什么来拯救自己?
是的,没错,简言之,就是一个不受长度限制的数据序列类型成为了一个客观的需求。难道是语言的创始者没想到?咱们创新的机会来了?打住、打住。建议所有的新手们都不要这样思考问题,一定不是前浪没想到,而是后浪才开始。你多浪几下,就会看到你现在还没看到的东西。
哈哈,也不要说“我命由我不由天”好吧,没那么严重。当然,也不至于简单到能随便new一个出来的。你该做的,还是应该静下心来,把搜索引擎打开。
好了,为了节省大家的时间,这里,我就不绕弯子了,直接给大家推荐一个新的数据类型,它就是List列表。当然它的前身是ArrayList。(C#2.0以前)
List列表,微软官方称之为泛型集合。
关于泛型,我们今后有机会还会进一步探讨。这里我们暂不关注什么是泛型,我们现在需要重点关注的是它的使用特性。
1、如何创建一个List列表?
List<T> myList = new List<T>();
- <>,表示它是一个数据序列,且有统一的类型;
- T,是一个泛型的标识,它表示可以是任何类型,甚至是一个用户自定义的类;
- List列表无需定义长度;
- List的长度是可变的。
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列表这个利器,创建或使用一个不定长的“数组”,还需要着急吗?
- composer安装其实可以很简单 两行命令就解决了
- 章神的私房菜之数据预处理
- 如何调用finecms指定栏目的描述关键词
- finecms栏目文章页seo设置
- Logistic回归实战篇之预测病马死亡率(一)
- DedeCMS后台500错误一种原因是不支持PHP5.3、5.4及以上版本
- finecms指定从第几篇文章开始调用5条记录,并调用文章所在栏目
- finecms如何调用多个栏目的子栏目
- 从傅立叶变换到Gabor滤波器
- 三个小时学会wordpress模板制作
- The each() function is deprecated报错的解决方法
- 书接上文:薛定谔的猫是如何诞生的?
- docker源码分析(3)---镜像(1)
- k8s源码分析-----kubelet(8)pod管理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++中sort函数使用方法
- 史上最贴心React渲染器开发辅导
- 010.Nginx正反代理
- ClickHouse源码笔记2:聚合流程的实现
- 5G边缘计算赋能安防互联网直播行业,青犀视频强力打造云、边、端一体化协同音视频解决方案
- 视频云平台流媒体服务EasyNVR能获取直播视频的RTSP流地址吗?
- 如何编写不存在即插入的 SQL
- SQL 打印一个月的日历
- Kubernetes节点的驱逐与预留
- 使用reveal.js制作精美的网页版PPT
- Ceph快照爱你不容易系列 03:快照数据一致性浅析
- 没想到竟是因为它!让我的服务器变成了别人的挖矿工具
- 从零到一,Serverless 平台在滴滴内部落地
- React 使用 Proxy 代理(create-react-app)
- .Net Core + EF + mysql 从数据库生成实体