数组、ArrayList和List的区别
数组、ArrayList和List的区别
数组、ArrayList和List的区别一、数组
1、数组在内存中是连续存储的,所以它的索引速度是非常的快,赋值与修改元素也很简单,但是在数组的两个数据间插入数据也是很麻烦的
2、在声明数组的时候,必须同时指明数组的长度,数组的长度过长,会造成内存浪费,数组和长度过短,会造成数据溢出的错误。
3、如果在声明数组时我们并不清楚数组的长度,就变的很棘手了。
4、数组定义时要写明类型,是字符串还是整形
例如
string[] s=new string[3];
//赋值
s[0]="a";
s[1]="b";
s[2]="c";
//修改
s[1]="b1";
二、ArrayList
1、ArrayList就是动态数组,可以动态的增加和减少元素。它的大小是按照其中存储的数据来动态扩充与收缩的。所以,我们在声明ArrayList对象时并不需要指定它的长度。
2、ArrayList继承了IList接口,所以它可以很方便的进行数据的添加,插入和移除.
3、可以存放任何类型的变量
4、ArrayList存在不安全类型与装箱拆箱
例如
ArrayList list = new ArrayList();
//新增数据
list.Add("abc");
list.Add(123);
//修改数据
list[2] = 345;
//移除数据
list.RemoveAt(0);
//插入数据
list.Insert(0, "hello world");
在上例list中,我们不仅插入了字符串"abc",而且又插入了数字123。这样在ArrayList中插入不同类型的数据是允许的。因为ArrayList会把所有插入其中的数据都当作为object类型来处理。这样,在我们使用ArrayList中的数据来处理问题的时候,很可能会报类型不匹配的错误,也就是说ArrayList不是类型安全的。既使我们保证在插入数据的时候都很小心,都有插入了同一类型的数据,但在使用的时候,我们也需要将它们转化为对应的原类型来处理。这就存在了装箱与拆箱的操作,会带来很大的性能损耗。
5、ArrayList与数组转换
ArrayList List = new ArrayList();
List.Add(1);
List.Add(2);
List.Add(3);
Int32[] values = (Int32[])List.ToArray(typeof(Int32));
ArrayList List = new ArrayList();
List.Add( “string” );
List.Add( 1 );
//往数组中添加不同类型的元素
object[] values = List.ToArray(typeof(object)); //正确
string[] values = (string[])List.ToArray(typeof(string)); //错误
和数组不一样,因为可以转换为Object数组,所以往ArrayList里面添加不同类型的元素是不会出错的,但是当调用ArrayList方法的时候,要么传递所有元素都可以正确转型的类型或者Object类型,否则将会抛出无法转型的异常。
三、List
List类是ArrayList类的泛型等效类。它的大部分用法都与ArrayList相似,因为List类也继承了IList接口。最关键的区别在于,在声明List集合时,我们同时需要为其声明List集合内数据的对象类型。
例如
List<int> list = new List<int>();
//新增数据
list.Add(123);
//修改数据
list[0] = 345;
//移除数据
list.RemoveAt(0);
上例中,如果我们往List集合中插入string字符"hello world",IDE就会报错,且不能通过编译。这样就避免了前面讲的类型安全问题与装箱拆箱的性能问题了。
- javascript将字符串转换成数组(如何将JavaScript将数组转为树形结构)
- php中数组使用技巧(php常用经典函数集锦数组、字符串、栈、队列、排序等)
- php常见的数组函数(用php定义一个数组最简单的方法)
- php数组详解(php数组和链表的区别总结)
- python 二维数组怎么取第二列(python实现二维数组的对角线遍历)
- 数组reduce方法的好处(JS使用reduce方法处理树形结构数据)
- python动态数组原理(Python实现的旋转数组功能算法示例)
- js中数组的操作
- python怎么从数组中取内容(python调用c++ ctype list传数组或者返回数组的方法)
- python删除数据框重复变量(Python3删除排序数组中重复项的方法分析)
- php多维数组怎么转换json(php实现的数组转xml案例分析)
- javascript四种数组(javascript数组includes、reduce的基本使用)
- 结构、枚举和数组的区别
- ajax 向后台传递数组参数
- react怎么绑定state(react纯函数组件setState更新页面不刷新的解决)
- python数组矩阵操作(Python矩阵和Numpy数组的那些事儿)
- 粗盐是什么 粗盐的功效与作用(粗盐的功效与作用)
- 会 吃人 的客机 从天堂到地狱只需5分钟,图-104如何做到(会吃人的客机)
- 男人犯的错,为什么要女人来承担(为什么要女人来承担)
- 心理学 四个金蟾,哪个最招财 测你今生的运势有多棒(心理学四个金蟾)
- 吉善缘《聚宝金蟾》金蟾招财摆件 三足全铜蟾蜍客厅店铺开业礼品(吉善缘聚宝金蟾金蟾招财摆件)
- 招财化煞神兽,金蟾变了(招财化煞神兽金蟾变了)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9