泛型之列表的创建和使用
来源:互联网 发布:怎么给js里传参 编辑:程序博客网 时间:2024/06/08 19:42
在前面,我们需要存储很多类型一样的数据的时候,我们一般都使用数组来存储并且管理,但是数组有个缺点就是数组的大小是固定的,那么当我们不确定数据的个数的时候,该怎么存储呢?
我们可以使用集合类来进行存储数据,列表List就是集合类的一种。我们可以使用列表很方便的添加、删除数据以及其他的操作。
列表的创建
列表可以存储任何类型的数据,在创建列表对象的时候,我们首先要指定要创建的这个对象要存储什么类型的(泛型)
创建列表的语法规则
//1.创建列表方法1List<int>scoreList = new List<int>(); new List<int>(){1,2,3}; new List<string>(){"one","two"};//2.创建列表方法2var scoreList = new List<int>();
这里要说的是,为什么列表可以存储不指定数量的数据呢?
列表内部数据实际上是使用数组进行的存储,一个空的列表内部会有一个长度为0的数组,当我们给列表添加元素的时候,列表的容量会扩大为4,如果再添加到第五个元素的时候,列表的大小会重新设置为8,以此类推,每次增加的容量为前一次的两倍。
那么列表的容量是怎么增加的?
每当列表的容量不够用的时候,它会创建一个新的数组,使用Array.Copy()方法将旧数组的元素全部复制到新数组中。但是为了节省时间,如果我们事先知道要存储的个数,可以利用列表的构造函数指定容量的大小。
在这里有个概念需要区分一下:
- 容量:容量是列表用于存储数据的数组的长度。
- 元素个数:元素个数是我们添加进去需要管理的数据的个数。
列表的两种遍历方式
用法和数组一样,不详细描述
List<int> list = new List<int>(); list.Add(12); list.Add(34); list.Add(56); list.Add(78); list.Add(90); list.Add(453); list.Add(342); list.Add(8976); //for循环遍历 for(int i = 0; i < list.Count; i++) { Console.Write(list[i] + " "); } Console.WriteLine(); //foreach循环遍历 foreach(int temp in list) { Console.Write(temp + " "); }
操作列表的属性和方法
既然列表和数组一样能够存储数据,那么也可以操作数据。这里写出一些比较常用的列表操作的方法,如果想要查看列表其他的操作方法,可以在VS里将光标移到List上按F12键。
- Capacity获取容量大小
- Add()方法添加元素
- Insert()方法插入元素
- [Index]访问元素
- Count属性访问元素个数
- RemoveAt()方法移除指定位置的元素
- IndexOf()方法取得一个元素所在列表中的索引位置;LastIndexOf()从后往前搜索,搜索到满足条件的就停止,没有找到返回-1
- Sort()方法对列表中的元素进行从小到大排序
下面用一个随机生成的列表来实现上面所说的操作
class Program { static void Main(string[] args) { //1.生成随机列表 Console.WriteLine("生成随机列表"); var list = new List<int>(); Random r = new Random(); for(int i = 0; i < 10; i++) { int random = r.Next(0, 101); list.Add(random); } foreach(int temp in list) { Console.Write(temp + " "); } Console.WriteLine(); Console.WriteLine("获取容量大小"); Console.WriteLine(list.Capacity); //2.插入元素 list.Insert(3, 1000); Console.WriteLine("插入元素'1000'后"); foreach (int temp in list) { Console.Write(temp + " "); } Console.WriteLine(); //3.访问元素 Console.WriteLine("访问第5个元素"); Console.WriteLine(list[4]); //4.访问元素个数 Console.WriteLine("访问元素个数"); Console.WriteLine(list.Count); //5.移除指定位置元素 Console.WriteLine("移除第5个元素"); list.RemoveAt(4); foreach (int temp in list) { Console.Write(temp + " "); } Console.WriteLine(); //6.取得插入元素的位置 Console.WriteLine("取得插入元素的位置"); int index = list.IndexOf(1000); Console.WriteLine(index); //list.LastIndexOf()方法是从后往前搜索 //7.对列表进行排序 Console.WriteLine("对列表进行排序"); list.Sort(); foreach (int temp in list) { Console.Write(temp + " "); } Console.ReadKey(); } }
泛型这个概念会在下一篇文章讲到,这篇文章所使用的列表都是使用了泛型的。
阅读全文
0 0
- 泛型之列表的创建和使用
- 列表List的创建和使用
- unityTaidou(一)NGUI之列表的创建与使用
- Android之使用AlertDialog.Builder类创建带列表的对话框和带自己所布局视图的对话框
- unity_NGUI系统学习(十一)_PopupList下拉列表(弹出列表)的创建和使用
- 使用标签创建下拉列表和多选列表框
- SharePoint 2010 创建联系人列表和使用联系人列表
- 使用Material Design 创建App翻译系列---列表和卡片集的创建
- java之对象的创建和使用
- 什么是迭代器,创建并使用迭代器.为整数列表创建迭代器.为泛型列表创建迭代器
- 使用泛型来创建我们自己的列表
- Python3,列表的创建和读取
- Haskell之列表的使用
- ionic之创建列表
- 使用jQuery和CSS3创建一个支持翻转效果的微/轻博客网站列表
- 创建数据库表 province 和 city ,使用 dropdownlist 的绑定,实现省市列表级联。
- 创建数据库表 province 和 city ,使用 dropdownlist 的绑定,实现省市列表级联。
- python循环的使用及range()创建数值列表和计算
- 解决SSH项目中Action跳转之后,页面样式、图片丢失的问题
- Control character in cookie value, consider BASE64 encoding your value
- django基础入门(3)-设计模型
- 2017-9-25
- 华为交换机基本视图
- 泛型之列表的创建和使用
- html笔记——可预约当日的select制作
- hdu 3308(线段树区间合并)
- java compiler level does not match the version of the installed java project facet错误的解决
- KMP算法的部分匹配值的计算
- Cg Programming/Unity/Order-Independent Transparency
- Lucene原理分析
- mysql密码管理
- 49.Scala中Variance代码实战及其在Spark中的应用源码解析