Array和ArrayList都是基于索引的数据结构,通常在Java程序中使用。 从概念上讲,ArrayList在内部由数组支持,但是,了解两者之间的区别是成为一名出色的Java开发人员的关键。 这是最基本的,尤其是刚开始编码的初学者。 虽然两者都用于存储Java中的元素(可以是原语或对象),但是它们在功能和性能方面却有着相当大的差异。 两者之间的主要区别在于Array是静态的,而ArrayList本质上是动态的。 本文在各个方面对两者进行了比较,以便您选择了解它们的区别。

Array和Arraylist之间的区别

1. 可调整大小
两种数据结构之间的主要区别之一是Array本质上是静态的,这意味着它是固定长度的数据类型,而ArrayList本质上是动态的,这意味着它是可变长度的数据结构。用技术术语来说,创建Array对象,就不能更改或修改Array的长度。 它包含相同数据类型的元素的顺序集合。 Java中的数组工作原理与C/C++中的数组不同。 另一方面,ArrayList可以调整自身大小,并且数组可以根据需要增长。 由于它是动态数据结构,因此可以在列表中添加和删除元素。

2. 泛型
无法在Java中创建接口的泛型类的数组,因此,数组和泛型不会并存,由于一个基本原因,即数组是协变而泛型是不变的,因此无法创建泛型数组。 虽然Array是固定长度的数据结构,但它包含相同类的对象或特定数据类型的原语。 因此,如果您尝试存储创建Array对象时指定的数据类型以外的其他数据类型,则它只会引发“ArrayStoreException”。 另一方面,ArrayList确实支持泛型以确保类型安全。

3. 原语
ArrayList中不允许使用:intdoublelongchar之类的原始数据类型。而是包含对象,而基元在Java中不被视为对象。另一方面,数组可以保存Java中的原语和对象,因为数组是Java中用于存储对象的最有效的数据结构之一。这是一种汇总数据类型,旨在容纳可以是相同或不同类型的对象。

4. 长度
为了获得Array的长度,代码需要访问length属性,因为必须知道长度才能对Array执行操作。尽管ArrayList使用size()方法确定ArrayList的大小,但它与确定Array的长度有很大不同。 size()方法属性确定ArrayList中元素的数量,而这又是ArrayList的容量。

public class ArrayLengthTest {

    public static void main(String[] args) {
        ArrayList<String> arrList = new ArrayList<String>();
        String[] items = { “One”, “Two”, “Three” };
        for(String str: items){
            arrList.add(str);
        }
        int size = items.size();
        System.out.println(size);
    }

}

5. 实现

Array是Java中的本机编程组件,它是动态创建的,它们使用赋值运算符保存元素,而ArrayList使用add()属性插入元素。 ArrayList是Java集合框架中的一个类,它使用一组指定的方法来访问和修改元素。 ArrayList的大小可以动态增加或减少。数组中的元素存储在连续的内存位置中,并且其大小始终保持静态。

6. 性能

尽管两种数据结构都提供了与ArrayList支持的类似的性能,但在CPU时间和内存使用方面,一个数据集比另一个数据集略有优势。假设,如果知道数组的大小,则很可能会使用ArrayList。但是,在Array上进行迭代比在ArrayList上进行迭代要快一些。如果程序涉及大量原语,则在时间和内存方面,数组的性能将明显优于ArrayList。数组是可以在集合实现中使用的低级编程语言。但是,性能可能会因您执行的操作而异。

Array ArrayList
数组是固定长度的数据结构,一旦创建数组对象,其长度便无法修改。 ArrayList本质上是动态的,这意味着它可以根据需要调整自身大小以进行扩展。
在整个程序中,数组的大小保持不变。 ArrayList的大小可以根据负载和容量动态增长。
它使用赋值运算符存储元素。 它使用add()属性插入元素。
它可以包含原语以及相同或不同数据类型的对象。 ArrayList中不允许使用基元。它只能包含对象类型。
数组和泛型不能并存。 ArrayList中允许使用泛型。
数组可以是多维的。 ArrayList是一维的。
这是一个本地编程组件,其中元素存储在连续的内存位置中。 这是Java集合框架中的一个类,其中的对象永远不会存储在连续的位置。
length变量用于确定数组的长度。 size()方法用于确定ArrayList的大小。
与ArrayList相比,占用更少的内存来存储指定的元素或对象。 占用比数组更多的内存来存储对象。
在数组上进行迭代比在ArrayList上进行迭代要快。 就性能而言,在ArrayList上进行迭代要慢得多。

总结

有些人可能会认为,在程序中实现数组比使用ArrayList更快地获得结果,原因很简单,因为数组是低级数据结构,但是性能可能会因您执行的操作而异。 好吧,Array的长度是固定的,而ArrayList的大小可以动态增加或减少,因此ArrayList在功能上比Array略有优势。 但是,尽管存在差异,但它们也具有一些相似之处。 两者都是Java中基于索引的数据结构,允许您存储对象,并且都允许空值和重复值。如果事先知道对象的大小,则应该使用一个数组,如果不确定大小,请使用ArrayList。

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:Array和ArrayList
本文链接:https://www.vsdiffer.com/vs/array-vs-arraylist.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。