数组和ArrayList

Anonim

什么是Array和ArrayList?

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

数组和Arraylist之间的区别

  1. 可调整大小

两个数据结构之间的主要和显着差异之一是Array本质上是静态的,这意味着它是固定长度的数据类型,而ArrayList本质上是动态的,这意味着它是一个可变长度的数据结构。在技​​术术语中,创建Array对象后,无法更改或修改Array的长度。它包含相同数据类型的元素的顺序集合。 Java中的数组与C / C ++中的数组不同。另一方面,ArrayList可以自行调整大小,阵列可以根据需要增长。由于它是动态数据结构,因此可以在列表中添加和删除元素。

  1. 泛型

您无法在Java中创建通用接口类的数组,因此数组和泛型不能齐头并进,因此无法创建通用数组,因为数组是协变的,而泛型是不变的。虽然Array是固定长度的数据结构,但它包含相同类的对象或特定数据类型的基元。因此,如果您尝试存储创建Array对象时指定的数据类型以外的其他数据类型,则只会抛出“ArrayStoreException”。另一方面,ArrayList确实支持泛型以确保类型安全。

  1. 基元

ArrayList中不允许使用原始数据类型,如int,double,long和char。它更确切地说是对象和原语在Java中不被视为对象。另一方面,数组可以保存Java中的原语和对象,因为它是Java中用于存储对象的最有效的数据结构之一。它是一种聚合数据类型,旨在保存可以是相同或不同类型的对象。

  1. 长度

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

例如:

public class ArrayLengthTest {

public static void main(String [] args){

数组列表 arrList = new ArrayList();

String [] items = {“One”,“Two”,“Three”};

for(String str:items){

arrList.add(STR);

}

int size = items.size();

的System.out.println(大小);

}

}

  1. 履行

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

  1. 性能

虽然两个数据结构都提供了类似的性能,因为ArrayList由Arrays支持,但是在CPU时间和内存使用方面,一个优先于另一个。比方说,如果你知道数组的大小,你很可能会使用ArrayList。但是,迭代Array比迭代ArrayList快一点。如果程序涉及大量原语,则在时间和内存方面,数组的性能明显优于ArrayList。数组是一种低级编程语言,可用于集合实现。但是,性能可能会因您执行的操作而异。

数组与数组列表

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

摘要

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