个性化阅读
专注于IT技术分析

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 <E>, Collection <E>, Iterable <E>, Cloneable, Serializable和RandomAccess接口。它扩展了AbstractList <E>类。

我们可以使用以下语句创建ArrayList的实例:

ArrayList<Type> arrayList=new ArrayList<Type>();

ArrayList由Java中的数组内部支持。 ArrayList中的调整大小操作会降低性能, 因为它涉及新阵列并将内容从旧阵列复制到新阵列。它调用本机实现的方法System.arraycopy(sec, srcPos, dest, destPos, length)。

我们无法将原始类型存储在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之间的主要区别:

基础 数组 数组列表
Definition 数组是动态创建的对象。它用作容纳不变数量的相同类型的值的容器。它具有连续的内存位置。 ArrayList是Java Collections框架的一类。它包含诸如Vector, HashTable和HashMap之类的流行类。
静态/动态 数组的大小是静态的。 ArrayList的大小是动态的。
Resizable 数组是固定长度的数据结构。 ArrayList是可变长度的数据结构。可以在需要时自行调整大小。
Initialization 在直接或间接初始化数组时, 必须提供数组的大小。 我们可以创建ArrayList的实例而无需指定其大小。 Java创建默认大小的ArrayList。
Performance 由于大小固定, 它与ArrayList相比执行速度更快。 ArrayList由Java中的数组内部支持。 ArrayList中的调整大小操作会降低性能。
原始/通用类型 数组可以存储对象和基元类型。 我们无法将原始类型存储在ArrayList中。它将自动将原始类型转换为对象。
Iterating Values 我们使用for循环或每个循环来遍历数组。 我们使用迭代器遍历ArrayList。
Type-Safety 我们不能将泛型与数组一起使用, 因为它不是数组的可转换类型。 ArrayList允许我们仅存储泛型/类型, 这就是为什么它是类型安全的。
Length 数组提供了一个长度变量, 它表示数组的长度。 ArrayList提供size()方法来确定ArrayList的大小。
添加元素 我们可以使用赋值运算符在数组中添加元素。 Java提供了add()方法以在ArrayList中添加元素。
Single/ Multi-Dimensional 数组可以是多维的。 ArrayList始终是一维的。

Java中的数组示例

在下面的示例中, 我们仅创建了一个长度为4的数组。

public class ArrayExample
{
public static void main(String args[])
{
//creating an array of integer type 
int arr[]=new int[4];
//adding elements into array 
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]);
}
}
}

输出:

12
2
15
67

Java中ArrayList的示例

在以下示例中, 我们创建了ArrayList的实例并在ArrayList上执行迭代。

import java.util.*;
public class ArrayListExample
{ 
public static void main(String args[]) 
{ 
//creating an instance of ArrayList
List<Float> list = new ArrayList<Float>(); 
//adding element to arraylist
list.add(12.4f); 
list.add(34.6f); 
list.add(56.8f); 
list.add(78.9f); 
//iteration over ArrayList using for-each loop
for(Float f:list)
{
System.out.println(f); 
}
} 
}

输出:

12.4
34.6
56.8
78.9

赞(0)
未经允许不得转载:srcmini » Array和ArrayList之间的区别

评论 抢沙发

评论前必须登录!