位置:首页 > 软件操作教程 > 编程开发 > Java > 问题详情

Java操作应用——Array 和ArrayList 选择

提问人:ylm发布时间:2020-09-29

ArrayList和Array是我们在实际编程中经常使用的容器,而且因为ArrayList相当于动态化的数组,所以它们之间有太多的相似,以至于我们在选择哪种来存储元素的时候,会有小小的迷惑,他们都有注解的优缺点,选择真的取决于你的真实场景。

1.Array 有固定大小但 ArrayList 的大小不同。由于Array 的大小是固定的,在Array 类型变量声明的时候,内存被分配。因此,Array 是非常快的。另一方面, 使用ArrayList的最大缺点就是当我们添加新的元素的时候,它是先检查内部数组的容量是否足够,如果不够,它会创建一个容量为原来数组两倍的新数组,���后将所有元素复制到新数组里,接着抛掉旧数组。这点真的很麻烦,因为每次都要这么搞,尤其是元素足够多的时候,这就真的是既影响内存又影响效率的问题,但通过单独测试它们的运行时间,发现其实差不多,最大的影响就是如果是有其他代码也需要使用到内存,那么Array依然不变,但是ArrayList就会变得慢多,相同情况下所花的时间是Array的四倍多(实际情况是远远不止)。

4.2.这是添加或删除元素从ArrayList 比Array更容易。

4.3.数组可以多维但ArrayList只有一个维度。

4.4.ArrayList因为内部是一个数组,所以它是可以转化为数组的。

4.5 两者的适用场合:

List list = new ArrayList();

虽然我们想要的确实是ArrayList而不是list,但是我们知道,父类是可以获得子类的引用并且使用子类的方法,所以这样我们就能同时使用List和ArrayList的方法而不用害怕出错了。

首先,一个重要的约束就是,List的声明区域一般是在main方法里(当然静态list也可以,但是我们一般使用的时候都只是当做存储元素的临时容器),而Array是可以在外部进行声明的,这时它就是全局数组。所以,单看这点,它们的使用已经有区别,如果想要保存一些在整个程序运行期间都会存在而且不变的数据,我们可以将它们放进一个全局数组里,但是如果我们单纯只是想要以数组的形式保存数据,方便我们进行查找,那么,我们就选择ArrayList。而且还有一个地方是必须知道的,就是如果我们需要对元素进行频繁的移动或删除,或者是处理的是超大量的数据,那么,使用ArrayList就真的不是一个好的选择,因为它的效率很低,使用数组进行这样的动作就很麻烦,那么,我们可以考虑选择LinkedList。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部