Array与ArrayList之间的区别
在Java中,
array 和
ArrayList 是众所周知的数据结构。数组是Java提供的基本功能,而
ArrayList 是Java Collections 框架的一类。它属于
java.util 包。
Java数组
数组是动态创建的目的。它充当一个容器,用于容纳相同数量的相同类型的值。它具有连续的内存位置。创建数组后,我们将无法更改其大小。我们可以使用以下语句创建一个数组:
int array[]=new int[size];
上面的语句创建一个指定大小的数组。当我们尝试添加的大小超过其大小时,它会抛出
ArrayIndexOutOfBoundsException 。例如:
int arr[]=new int[3];
//specified size of array is 3
//adding 4 elements into array
arr[0]=12;
arr[1]=2;
arr[2]=15;
arr[3]=67;
Java ArrayList类
在Java中,
ArrayList 是Collections框架的一类。它实现了
List
,Collection
,Iterable
,Cloneable,Serializable
和
RandomAccess 接口。它扩展了
AbstractList
类。
我们可以使用以下语句创建ArrayList的实例:
ArrayList<Type>arrayList=new ArrayList<Type>();
ArrayList由Java中的数组内部支持。 ArrayList中的调整大小操作会降低性能,因为它涉及新阵列并将内容从旧阵列复制到新阵列。它调用本机实现的方法
System.arraycopy(sec,srcPos,dest,destPos,长度)。
我们无法在ArrayList中存储原始类型。因此,它仅存储对象。它将自动将原始类型转换为对象。例如,我们创建了一个ArrayList对象,
ArrayList <Integer> list=new ArrayList<Integer>();
//object of ArrayList
arrayObj.add(12);
//trying to add integer primitive to the ArrayList
JVM通过自动装箱将其转换为Integer对象。
ArrayList arrayObj=new ArrayList()
//object of ArrayList
arrayObj(new Integer(12));
//converts integer primitive to Integer object and added to ArrayList object
相似之处
Array和ArrayList都用于存储元素。
Array和ArrayList都可以存储空值。
它们可以有重复的值。
它们不保留元素的顺序。
下表描述了array和ArrayList之间的主要区别:
基础 |
数组 |
ArrayList |
定义 |
Array是动态创建的对象。它充当一个容器,用于容纳相同数量的相同类型的值。它具有连续的内存位置。 |
ArrayList 是Java Collections 框架的一类。它包含流行的类,例如 Vector,HashTable 和 HashMap</strong>。 |
静态/动态 |
阵列的大小为静态。 |
ArrayList的大小为动态。 |
可调整大小 |
一个数组是一个定长数据结构。 |
ArrayList是可变长度数据结构。可以在需要时自行调整大小。 |
初始化 |
在直接或间接初始化数组时,必须提供数组的大小。 |
我们可以创建ArrayList的实例,而无需指定其大小。 Java创建默认大小的ArrayList。 |
性能 |
由于大小固定,与ArrayList相比,它执行快速。 |
ArrayList由Java中的数组内部支持。 ArrayList中的调整大小操作会降低性能。 |
原始/通用类型 |
一个数组可以存储对象和基元类型。 |
我们无法将原始类型存储在ArrayList中。它会自动将原始类型转换为对象。 |
迭代值 |
我们对循环使用 循环,对每个循环使用 循环。 |
我们使用迭代器遍历ArrayList。 |
类型安全 |
我们不能将泛型与数组一起使用,因为它不是数组的可转换类型。 |
ArrayList允许我们仅存储通用/类型,这就是为什么它是类型安全的。 |
长度 |
Array提供了一个 length 变量,它表示数组的长度。 |
ArrayList提供 size()方法来确定ArrayList的大小。 |
添加元素 |
我们可以使用 assignment 运算符在数组中添加元素。 |
Java提供了 add()方法以在ArrayList中添加元素。 |
单/多维 |
数组可以是多维。 |
ArrayList始终为一维。 |
Java中数组的示例
在下面的示例中,我们仅创建了一个长度为4的数组。
public class ArrayExample{
public static void main(String args[]){
int arr[]=new int[4];
arr[0]=12;
arr[1]=2;
arr[2]=15;
arr[3]=67;
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
输出:
Java中ArrayList的示例
在下面的示例中,我们创建了ArrayList的实例并在ArrayList上执行迭代。
import java.util.*;
public class ArrayListExample{
public static void main(String args[]) {
List<float>
list = new ArrayList<float>();
list.add(12.4f);
list.add(34.6f);
list.add(56.8f);
list.add(78.9f);
for(float f:list){
System.out.println(f);
}
}
}
输出: