ArrayList和List的主要区别是什么?

2020-04-09 10:51发布

7条回答
小狮子
2楼 · 2011-10-18 15:35

1、在编程语言中ArrayList类是bai.Net Framework提供的用于数据存储和检du索的专用类。List 类可以简zhi单视之为双向连结串行,以线性列的方式管理物件集合。List类是ArrayList类的泛型等效类。

2、ArrayList继承了IList接口,所以它可以很方便的进行数据的添加,插入和移除。List的大部分用法都与ArrayList相似,List类也继承了IList接口。

3、在ArrayList中可以插入不同类型的数据。ArrayList会把所有插入其中的数据都当作为object类型来处理,这其中存在装箱与拆箱的操作,会对系统造成性能上的损耗。而List需要声明其数据的对象类型。声明后插入其他类型数据,IDE就会报错,且不能通过编译。


Mantra
3楼 · 2020-04-09 10:57

最主要的区别,List是泛型,ArrayList不是。

听雨
4楼 · 2020-04-09 19:25

区别有两方面:

    一:存储的数据在类型方面,ArrayList是非泛型集合可以存储任意数据类型, 而List是泛型集合只能存储指定类型的数据。


    二、在性能方面,List比ArrayList会好很多; ArrayList在存储数据时需要进行装箱与拆箱操作,这个非常耗性能

男孩无衣
5楼 · 2020-04-10 12:18

ArrayList是“非泛型”集合,泛型的意思就是“规范的”。 非泛型指的是,这个集合里面可以存放“不是相同规范”的数据类型。它就像一个超市的购物篮,什么类型的东西都可以放进去。


List是泛型集合,在定义时,必须指定这个集合里面存放的数据类型是什么,例如:List<>

list中只能存放整形,其它的类型存不进去.


它们的主要区别也是互相的优劣势.   ArrayList可以存放任意数据,很方便,啥都能装, 缺点就是向里面存数据时候必须"包装"一下,也就是“装箱”,转成object类型存储。取出的时候还要拆箱,转回原来的类型。效率差很多。


List泛型集合里面的数据类型是一致的, 不需要再做装箱拆箱了,效率和规范性会好很多。


各有各的使用场景, 没有完全的说谁一定谁好。

 

Transform
6楼 · 2020-04-15 01:08

ArrayList需要进行拆装箱操作,List不需要,所以后者使用更多一些哦

Ross
7楼 · 2020-04-27 09:39

两个都是动态数组,都可以很方便的对集合中的元素进行增删改查,区别是ArrayList是非泛型的,里面所有的元素均为object类型,如果把值类型的数据添加到集合中去的时候,存在装箱操作。List是泛型的,创建集合对象的时候,再决定集合中的元素是什么类型的,避免了装箱操作。另外二者属于不同的名字空间。

蜗牛
8楼 · 2020-05-11 09:23

ArrayList中存储的类型都是object类型,而其他类型与object类型进行转换的过程就会产生拆箱装箱,

ArrayList是非泛型集合可以存储任意数据类型, 而List是泛型集合只能存储指定类型的数据。

相关问题推荐

  • 回答 5

    第一种方法:通过点击场景文件打开Unity游戏工程找到Unity游戏工程所在的目录,我这里的工程放在在E盘根路径的Unity_workspace文件夹中。注意:unity软件不支持中文路径,所以不要把工程放在中文文件夹下。我们在这里就打开New Unity Project 4工程,进入到Ne...

  • 回答 13
    已采纳

    如果是学习研究的话,当然是体验官方的最新版本。要是项目开发的话,还是要选择长期稳定版本,也就是大版本的LTS。比如2017.4或者是2018.4都是LTS版本,至于后面的小版本可以去看下更新的内容来做选择吧!...

  • 回答 9

    unity3D是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC...

  • 回答 11

    1、Unity3D:如果你需要开发大型游戏,或需要开发3D游戏的,请选这个。2、Cocos2D-x:如果你开发的是中小型游戏,对安装包大小比较在意的,请选这个。3、Andengine、Cocos2D-iPhone:如果你只为开发单平台游戏,又非常在意速度和安装包大小,请选这个。最后。...

  • 回答 11

    首先在场景中调整好你要观看的视角选择摄像机,按下Ctrl+Shift+F或者菜单栏->GameObject->Align with view在不行的话,可以调整摄像机的Position 和 Rotation

  • 回答 5

    将MeshRender组件移除即可:

  • 回答 17

    还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学  学学js flash as等等  有个梯度就好多了如果要用好unity  不会编程那是不行的  学习的过程中都有个头疼的过程  记住  头越痛  代表你要接受的东西越多  坚持 你的大脑在和知识兼容中:D...

  • 回答 9

    1.在Asset store里选择一个skybox。 2.从素材库中选择一个人物角色,也可以自己建模或者在其他软件中做好再导进来。 3.想好角色如何运动,然后用自己比较熟悉的语言编写来作展示,这段代码可以实现当你按下键盘上的A/D/S/W的按键时,角色会向前后左右四个方向的...

  • 回答 4

    xcel 表的操作少不了要引入第三方库,首先我们需要引入 Excel.dll 和 ICSharpCode.SharpZipLib.dll,这两个类库在网上都能找到;然后我们还需要引入 System.Data.dll,这个类库在 Unity3D 的安装路径下的 Editor\Data\Mono\lib\mono\unity 文件夹下能找到...

  • 回答 1

    需要添加如下引用: System.Configuration System.Data System.EnterpriseServices System.Security System.XML using UnityEngine; using System.Collections; using System;  using  System.Data;  using System.Data...

  • 物理引擎问题2021-06-15 17:35
    回答 4

    物理引擎则使用动量、扭矩等用高等数学手段来模拟真实物体,这将得到更真实的效果且使我们的编码更加容易。

  • 回答 1

    不能这样表述,三维通常是立体的空间,二维则是平面的。数学中通常是Oxyz表示空间直角坐标系,Oxy表示表示的是平面直角坐标系,你可以说空间直角坐标系中去掉Z轴可以转换为二维,因为去掉X或Y轴都能转换为二维。...

  • 回答 2

    GameObject.renderer.enabled//是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的GameObject.Destroy()//表示移除物体或物体上的组件 代表销毁该物体 实际上该物体的内存并没有立即释放,而是等到这...

  • Canvas三种渲染模式2021-04-29 19:50
    回答 10

    一:Overlay—覆盖模式类似于手机贴膜,所有UI都会显示在场景中2D,3D物体的上层在同一个Canvas下可以调整Canvas子物体的先后顺序,层级面板中越靠上则先被渲染多个Canvas下可以调整Canvas组件的Sort Order属性调整渲染顺序,数值越小的画布越先被渲染:Camer...

  • Unity引擎2021-04-29 19:47
    回答 4

    不得不说,Unity3d是个解放生产力的游戏引擎,自带了各种编辑器,可以进行一系列的可视化操作。需要注意的是,unity3d适合FPS游戏,物理游戏等中小型的游戏,并不太适合MMO开发。unity3d难学吗?如何学习unity3d呢?在学习之前又应该了解哪些内容呢?代码写不...

  • 回答 3

    不是人工检查的,如果你的问题里面有敏感关键字,是发不出去的,现在国内所有的网站在发布文章时都要进行检查的,所以你在发之前先检查一下看问题里面是否有违禁词语。

没有解决我的问题,去提问